0

我第一次重载下标运算符,并且在返回参考值时遇到了麻烦。我从c++faq tag
的帖子中遵循了经验法则,但是我缺少一些东西。

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关键字之外是相同的)。
问题是当我运行测试主程序时,它只是崩溃了。我认为错误在return *b->data;声明中,但我无法确定它可能是哪个,也无法确定我是否错了并且还有其他错误。
有任何想法吗?
提前致谢。

4

1 回答 1

1

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

return b->data;

否则,您将返回对数据地址的引用。

编辑:更正了一个错误

于 2013-06-05T15:30:06.660 回答