2016-06-22 68 views
-1

我重載了C++項目中的增量運算符,但是當我嘗試並調用它時,找不到超載函數。爲什麼找不到重載的操作符函數?

TListIterator<T> & operator ++(void) 
{ 
    TListElement<T> *pNext = pCurrent->getNext(); 

    if(pCurrent && pNext) 
     this->pCurrent = pNext; 

    return *this; 
} 

我嘗試並調用像這樣:

(*it)++; 

過載的方法是「TListIterator」類的一部分,它是一個指向TListIterator。

我收到的錯誤是:

Error C2676 binary '++': 'TListIterator<T>' does not define this operator or a conversion to a type acceptable to the predefined operator 

編輯要介紹的人標記我的問題爲重複到一個你聯繫我:

其他職位直接問你如何區分後增量和增量前重載,因爲我不知道我的調用不起作用的原因是由於重載錯誤的操作符使得我的問題完全不同。

+6

[C++增加運算符]的可能的重複(http://stackoverflow.com/questions/2777375/c-increment-operator) – tkausl

+0

'運算符++'需要是一個東西,比如'operator ++'嗎? – Darkrifts

+0

沒有空間不算數,雖然當我把頭髮拉出來的時候,我嘗試去除空間無濟於事。我會着眼於tkausl – MikeO

回答

2

當您重載增量運算符時,只有兩種方法。因此,試圖定義功能如下:

TListIterator<T> & operator ++() 

TListIterator<T> & operator ++(int) 

其中第一前綴,第二個後綴。

+0

謝謝,我剛剛在發佈此消息之前收到了Nicky C的回覆,但也感謝你;我一直把我的頭髮拉出來。 – MikeO

+0

沒關係! –

相關問題