0

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

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

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

我希望返回一个真实但从未发生的

4

1 回答 1

6

看来你的意思

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] ){
于 2019-10-14T10:58:16.557 回答