下标运算符重载:返回引用问题

时间:2013-06-05 15:18:38

标签: c++ reference operator-overloading subscript-operator

我第一次重载下标操作符,我在返回参考值时遇到了麻烦。
我从 c ++ faq标签中的帖子中遵循了经验法则,但是我有些遗漏。

const T& operator[](int index) const {
    if ((index < 0) || (index > size)) {
                    // provide exception handling for this error
        std::cout << "Error! Index out of bound." << std::endl;
        std::exit(0);
    } else {
        Block* b = head;
        while (b) {
            if (b->position == index)
                return *b->data;

            b = b->next;
        }
    }
}

我在两种变体中实现了它们:const返回值和const函数(如上所述)和没有(除了两个const关键字之外都是相同的)。 /> 问题是,当我运行测试主程序时,它只会崩溃。我认为这个bug出现在return *b->data;语句中,但我无法确定它可能是什么,也不知道我是否错了,还有其他错误。
任何想法?
提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果你想返回一个关于数据的引用,我不确定它是否是你想要的,你要返回类型为T的引用,我假设数据类型为T,它应该是这样的: / p>

return b->data;

否则,您将返回有关数据地址的参考。

编辑:纠正了错误