我第一次重载下标操作符,我在返回参考值时遇到了麻烦。
我从 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;
语句中,但我无法确定它可能是什么,也不知道我是否错了,还有其他错误。
任何想法?
提前谢谢。
答案 0 :(得分:1)
如果你想返回一个关于数据的引用,我不确定它是否是你想要的,你要返回类型为T的引用,我假设数据类型为T,它应该是这样的: / p>
return b->data;
否则,您将返回有关数据地址的参考。
编辑:纠正了错误