【问题标题】:Why isn't the overloaded operator function being found?为什么找不到重载的运算符函数?
【发布时间】:2016-06-22 01:12:48
【问题描述】:

我在一个 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

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

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

【问题讨论】:

  • C++ increment operator的可能重复
  • operator ++ 是否需要像 operator++ 一样是一回事?
  • 没有空间不算数,尽管当我拉头发时,我确实尝试删除空间但无济于事。我会调查那个 tkausl
  • 区分前置增量和后置增量。
  • 哦,哇,Nicky C,你是我的救星;对于后增量,它需要一个虚拟的“int”才能工作,否则我会称之为 ++(*it);你想发表你的评论作为我标记正确的答案吗?

标签: c++ oop operator-overloading


【解决方案1】:

重载自增运算符时,只有两种方法。所以尝试如下定义你的函数:

TListIterator< T > & operator ++()

TListIterator< T > & operator ++(int)

其中第一个为前缀,第二个为后缀。

【讨论】:

  • 谢谢,在您发布此内容之前,我刚刚从 cmets 中的 Nicky C 那里得到了答复,但也感谢您;我一直在为此拉头发。
猜你喜欢
  • 1970-01-01
  • 2015-11-13
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
相关资源
最近更新 更多