C ++: использование предварительно объявленного оператора [] в другом методе

Я пытаюсь использовать предварительно объявленный operator[] в другом методе того же класса. Тем не менее, я понятия не имею, как поступить. Самое смешное, что я даже не знаю, как гуглить :(. Пожалуйста, посоветуйте …

Это часть двусвязного списка — я хочу включить в нем поведение массива (я знаю — не очень хорошо :)).

Фрагмент кода:

template <typename T>
T& DLL<T>::operator[](int i) const{
Node <T>*n = this->head;
int counter = 0;
while (counter > i) {
n = n->next;
counter++;
}
return n->next->val;
}

template <typename T>
T& DLL<T>::at(int i) const throw (IndexOutOfBounds) {
if (i < 0 || i >= elemNum) {
throw IndexOutOfBounds("Illegal index in function at()");
}
// I want this part to use the predeclared operator
// obviously this is not right...
return this[i];  // Why u no work?!??!?
}

1

Решение

Попробуйте позвонить this->operator[](i), Это должно дать вам желаемый результат.

РЕДАКТИРОВАТЬ

Как сказал WhozCraig: (*this)[i] работает также и, вероятно, более элегантно.

2

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


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