1

我想在同一個類的另一個方法中使用預先聲明的operator[]。但是,我不知道如何繼續。有趣的是,我甚至不知道如何谷歌它:(。請,建議...C++:在另一種方法中使用預先聲明的運算符[]

這是雙鏈表的一部分 - 我想在其中啓用數組行爲(我知道 - 不好 :))。

代碼片段:

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-indexing;不是你的運營商。 – WhozCraig 2014-11-05 23:28:52

+0

@WhozCraig Woops!我認爲你應該把它作爲回答而不是評論 - 但這實際上是解決方案...謝謝! – RafazZ 2014-11-05 23:31:39

回答

2

嘗試調用this->operator[](i)。這應該會給你想要的結果。

編輯

正如WhozCraig說:(*this)[i]工程,以及與可能是更優雅。

相關問題