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

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

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

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

Другие вопросы по тегам