Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法转换';类::运算符==';从类型';bool(Class::)(Class*)输入';布尔_C++_Class_Operator Overloading_Equality Operator - Fatal编程技术网

C++ 无法转换';类::运算符==';从类型';bool(Class::)(Class*)输入';布尔

C++ 无法转换';类::运算符==';从类型';bool(Class::)(Class*)输入';布尔,c++,class,operator-overloading,equality-operator,C++,Class,Operator Overloading,Equality Operator,我正在做一个方法,看看两张牌是否有相同的号码或花色 这是我的重载运算符和我调用重载运算符的方法 bool Carta::operator==(Carta *c){ if(getNumCarta()==c->getNumCarta() || getNumPal()==c->getNumPal()){ return true; } else{ return false; } //return(numCarta==c-&

我正在做一个方法,看看两张牌是否有相同的号码或花色

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

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;
}
bool Carta::operator==(Carta*c){
如果(getNumCarta()==c->getNumCarta()| | getNumPal()==c->getNumPal()){
返回true;
}
否则{
返回false;
}
//返回(numCarta==c->numCarta)| |(numPal!==c->numPal);
}
波尔·卡塔:接线员=(Carta*c){
如果(getNumCarta()!=c->getNumCarta()&&getNumPal()!=c->getNumPal()){
返回true;
}
否则{
返回false;
}
}
bool表::pairs(){
对于(int i=1;ioperator==t[i+1]){
返回true;
}
}
返回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] ){

投票以打字错误结束。如果您真的想坚持显式调用操作符,那么它就是
t[i-1]->operator==(t[i+1])
。或者,更常规地说,
*t[i-1]==t[i+1]
。(更传统的做法是不使用指针,而是使用引用,这样操作符是对称的:
*t[i-1]===*t[i+1]
)。此外,如果(x)返回true,
;否则返回false
只是
返回x。是的!谢谢第一和第二的区别是什么?可读性。。。在obove函数中,将其设为
function(const Carta*c)const
,因为您不打算更改lhs或rhsin而不是
if(getNumCarta()!=c->getNumCarta()&&getNumPal()!=c->getNumPal()){return true;}否则{return false;}
-只需执行:
return getNumCarta()!=c->getNumCarta()&&getNumPal()!=c->getNumPal()