二进制表达式的无效操作数('int_node'和const'int_node')

时间:2013-07-18 15:48:37

标签: c++

我是C ++初学者,围绕着我的许多问题。我已经定义了!=的{​​{1}}运算符,但是当我编译此代码时,显示错误:

  

二进制表达式的无效操作数('int_node'和const'int_node')

我使用的IDE是xcode 4.6。

以下是我的所有代码

int_node

2 个答案:

答案 0 :(得分:4)

我的编译器说

  

“1> main.cpp(28):错误C2676:    二进制'!=':   'int_node'未定义此运算符或转换为类型   预定义的运算符“

可接受

这是真的。

我们可以用!=来定义==,例如对于您遗失的int_node

bool operator == (const int_node &i) const {return val == i.val;}
bool operator != (const int_node &i) const {return !(*this==i);}

您需要定义运算符 - 它们是否也应该检查节点?

顺便说一句,你打算不论什么都返回first

while (first != last && *first != value)
{
    ++first;
    return first;
    //     ^^^^^
    //     |||||
}

答案 1 :(得分:1)

我在那里看到两件事:

  • struct int_node未定义自身与const int_node &实例之间的任何比较运算符,并且会响应您的问题;
  • 函数Iterator find(Iterator first, Iterator last, const T& value)中的
  • return语句中有while个语句,因此while无用,或者return应该放在外面它。