Я пытаюсь использовать предварительно объявленный 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?!??!?
}
Попробуйте позвонить this->operator[](i)
, Это должно дать вам желаемый результат.
РЕДАКТИРОВАТЬ
Как сказал WhozCraig: (*this)[i]
работает также и, вероятно, более элегантно.