1

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

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

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

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?!??!? 
} 
+2

Думаете, вы имели в виду '(* this) [i]'. «у вас нет работы», потому что вы используете индексацию poiner; не ваш оператор. – WhozCraig

+0

@WhozCraig Woops! Я думаю, вы должны опубликовать его как ответ, а не комментарий, - но на самом деле это решение ... Спасибо! – RafazZ

ответ

2

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

EDIT

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

Смежные вопросы