无法将 'Class::operator==' 从类型 'bool (Class::)(Class*) 转换为类型 'bool [关闭]
Posted
技术标签:
【中文标题】无法将 \'Class::operator==\' 从类型 \'bool (Class::)(Class*) 转换为类型 \'bool [关闭]【英文标题】:Cannot convert 'Class::operator==' from type 'bool (Class::)(Class*) to type 'bool [closed]无法将 'Class::operator==' 从类型 'bool (Class::)(Class*) 转换为类型 'bool [关闭] 【发布时间】:2020-02-10 23:35:44 【问题描述】:我正在做一个方法来看看两张牌是否有相同的数字或花色
这是我的重载运算符和我调用重载运算符的方法
bool Carta::operator==(Carta *c)
if(getNumCarta()==c->getNumCarta() || getNumPal()==c->getNumPal())
return true;
else
return false;
//return(numCarta==c->numCarta)||(numPal!==c->numPal);
bool Carta::operator!=(Carta *c)
if(getNumCarta()!=c->getNumCarta() && getNumPal()!=c->getNumPal())
return true;
else
return false;
bool Table::pairs()
for(int i=1;i<posFull;i++)
if(t[i-1]->operator == t[i+1])
return true;
return false;
我希望返回一个 true 但永远不会发生
【问题讨论】:
投票结束为错字。t[i-1]->operator==(t[i+1])
如果你真的想坚持显式调用操作员。或者,更常规地,*t[i-1] == t[i+1]
。 (更传统的做法是不采用指针而是采用引用,因此运算符是对称的:*t[i-1] == *t[i+1]
)。
进一步,if (x) return true; else return false;
就是return x;
。
是的!谢谢。第一和第二有什么区别?
可读性...在上述函数中,将其设为function(const Carta* c) const
,因为您不会更改 lhs 或 rhs
代替if(getNumCarta()!=c->getNumCarta() && getNumPal()!=c->getNumPal()) return true; else return false;
- 只需:return getNumCarta() != c->getNumCarta() && getNumPal() != c->getNumPal();
【参考方案1】:
看来你的意思
if(t[i-1]->operator ==( t[i+1]) )
或者你可以写
if( *t[i-1] == t[i+1] )
然而这个操作符声明
bool operator==(Carta *c);
只会让代码的读者感到困惑。最好将运算符声明为
bool operator ==( const Carta &c ) const;
并像使用它
if( *t[i-1] == *t[i+1] )
【讨论】:
以上是关于无法将 'Class::operator==' 从类型 'bool (Class::)(Class*) 转换为类型 'bool [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
无法将文件从 obj\Debug 复制到 bin\Debug
无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV
Flutter - 无法将所有 json 数据从 api 响应保存到 Iterable List 编辑:(无法从可迭代列表中获取数据)