无法将 '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]-&gt;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-&gt;getNumCarta() &amp;&amp; getNumPal()!=c-&gt;getNumPal()) return true; else return false; - 只需:return getNumCarta() != c-&gt;getNumCarta() &amp;&amp; getNumPal() != c-&gt;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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

halcon多层感知器MLP的使用

无法将文件从 obj\Debug 复制到 bin\Debug

无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV

Flutter - 无法将所有 json 数据从 api 响应保存到 Iterable List 编辑:(无法从可迭代列表中获取数据)

无法将数据从 React 发送到 Springboot

无法将输入从 JTextField 存储到文件写入器