无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型

Cannot convert 'Class::operator==' from type 'bool (Class::)(Class*) to type 'bool

本文关键字:类型 布尔 转换 operator Class      更新时间:2023-10-16

我正在做一种方法来查看两张牌是否具有相同的数字或花色

这是我的重载运算符和我调用重载运算符的方法

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;
}

我希望返回一个真实但永远不会发生

看来你的意思

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] ){