为什么找不到重载的运算符函数?

时间:2016-06-22 01:12:49

标签: c++ oop operator-overloading

我在C ++项目中重载了增量运算符,但是当我尝试调用它时,找不到重载函数。

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

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

    return *this;
}

我试着像这样调用:

(*it)++;

重载方法是TListIterator&#39;的一部分。 class,它是指向TListIterator的指针。

我收到的错误是:

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

编辑向标记我的问题的人解释为与您链接的人重复:

另一篇文章直接询问你如何区分后增量和预增量超载,因为我不知道我的调用不起作用的原因是由于重载错误的操作符使我的问题完全不同。

1 个答案:

答案 0 :(得分:2)

重载增量运算符时,只有两种方法。因此,请尝试按如下方式定义您的函数:

TListIterator< T > & operator ++()

TListIterator< T > & operator ++(int)

其中第一个用于前缀,第二个用于后缀。