Перегрузка оператора нижнего индекса: возвращение проблем со ссылками

Я перегружаю оператор нижнего индекса в первый раз, и у меня возникают проблемы с возвратом ссылочного значения.
Я следовал правилам большого пальца из поста в 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; утверждение, но я не могу понять, что это может быть, и если я не прав, и есть другие ошибки.
Есть идеи?
Заранее спасибо.

0

Решение

Если вы хотите вернуть ссылку на данные, я не уверен, что это то, что вам нужно, вы должны вернуть ссылку типа T, и я предполагаю, что данные имеют тип T, это должно быть что-то вроде:

return b->data;

Иначе, вы возвращаете ссылку на адрес данных.

РЕДАКТИРОВАТЬ: Исправил ошибку

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]