Перегрузка оператора нижнего индекса: возвращение проблем со ссылками
Я перегружаю оператор нижнего индекса в первый раз, и у меня возникают проблемы с возвратом ссылочного значения.
Я следовал эмпирическим правилам из поста в тэге 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
ключевые слова).
Проблема в том, что когда я запускаю основной тест, он просто падает. Я думал, что ошибка была в return *b->data;
утверждение, но я не могу понять, что это может быть, и если я не прав, и есть другие ошибки.
Есть идеи?
Заранее спасибо.
1 ответ
Если вы хотите вернуть ссылку на данные, я не уверен, что это то, что вам нужно, вы должны вернуть ссылку типа T, и я предполагаю, что данные имеют тип T, это должно быть что-то вроде:
return b->data;
Иначе, вы возвращаете ссылку на адрес данных.
РЕДАКТИРОВАТЬ: исправил ошибку