我是C ++初学者,围绕着我的许多问题。我已经定义了!=
的{{1}}运算符,但是当我编译此代码时,显示错误:
二进制表达式的无效操作数('int_node'和const'int_node')
我使用的IDE是xcode 4.6。
以下是我的所有代码
int_node
答案 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
应该放在外面它。