我在网站上搜索了类似的内容,但其他关于“不匹配运营商”错误的帖子对我的情况没有帮助。
我在开头有一个struct节点,然后是以下代码:
函数end()返回一个类型节点。因此,语句op!= end(OPEN)应该解决得很好,但是我收到错误:'* op!= end(OPEN)'中的'operator!='不匹配
我正在使用G ++编译器。有谁知道我做错了什么?几个小时我一直在努力...谢谢
typedef struct node {
bool h1;
bool w1;
bool h2;
bool w2;
bool h3;
bool w3;
bool b;
int operation;
int iterator;
node *parent;};
node end ( list l ) {
node *n;
return *n;}
bool exists ( node *s, list OPEN, list CLOSED ){
node op;
node cl;
op = begin(OPEN);
cl = begin(CLOSED);
int x;
for(; op != end(OPEN); x++)
{
if( (*(*op)) == (*s) )
{
break;
}
}
答案 0 :(得分:2)
您需要为node
类型定义比较运算符:
bool operator!=( const node& lhs, const node& rhs );
只需定义一个相等比较,然后用它来定义不等式:
bool operator==( const node& lhs, const node& rhs ) {
return ...; // whatever
}
bool operator!=( const node& lhs, const node& rhs ) {
return !( lhs == rhs );
}
此外,除非您访问私人成员,否则这些不必是成员函数。
答案 1 :(得分:0)
op != end(OPEN)
您正在尝试比较两个node
结构,但没有为它们定义比较运算符。
我不确定你的代码甚至是什么。您是在尝试比较结构值还是指针?什么是end
函数应该做什么?现在,它会导致未定义的行为,因为您正在取消引用未初始化的指针。