我第一次重载下标运算符,并且在返回参考值时遇到了麻烦。我从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;
声明中,但我无法确定它可能是哪个,也无法确定我是否错了并且还有其他错误。
有任何想法吗?
提前致谢。