不匹配'operator =='C++编译错误

use*_*364 4 c++ compiler-errors

来自C++新手的另一个问题.

我收到编译器错误"不匹配'运算符=='"以获取以下代码块

void swap(Team t1, Player p1, Team t2, Player p2){
    Player new_t1[11];
    Player new_t2[11];
    for(int i=0; i<11; i++){
        new_t1[i] = t1.get_player(i);
        new_t2[i] = t2.get_player(i);
        if(new_t1[i] == p1){
            new_t1[i] = p2;
        }
        if(new_t2[i] == p2){
            new_t2[i] = p1;
        }
    }

    cout << "Players swapped.";
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Geo*_*sov 13

编译器不知道这两个玩家是什么意思相同.如果他们的名字相同,他们是否相同?还是他们的ID?您需要定义==运算符class Player.

bool operator == (const Player &p1, const Player &p2)
{
   if( / * evaluate their equality */)
     return true;
   else
     return false;
}
Run Code Online (Sandbox Code Playgroud)

另外,我认为你的swap()功能现在没有任何效果.您可能希望将其更改为通过引用接受Teams和Players.


Erw*_*ald 5

您需要为 Player 类“重载” == 运算符。在其他情况下,您需要告诉编译器在您的 Player 对象中比较什么。

例子 :

bool MyClass::operator==(const MyClass &other) const { ... // Compare the values, and return a bool result. }

可能会帮助你: 运算符重载

问候, 埃尔瓦尔德