6 votes

Aucune correspondance pour "operator==" Erreur de compilation C++.

Une autre question d'un débutant en C++.

Je reçois une erreur de compilation "No match for 'operator=='" pour le bloc de code suivant

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

Des idées ?

17voto

George Skoptsov Points 2362

Le compilateur ne sait pas ce que cela signifie pour les deux joueurs d'être les mêmes. Sont-ils les mêmes si leurs noms sont les mêmes ? Ou leurs identifiants ? Vous devez définir l'opérateur == pour class Player .

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

Aussi, je ne pense pas que votre swap() n'a aucun effet en ce moment. Vous pouvez la changer pour accepter Team et Player par référence.

5voto

Erwald Points 1920

Vous devez "surcharger" l'opérateur == pour votre classe Player. En d'autres termes, vous devez indiquer au compilateur ce qu'il doit comparer dans votre objet Player.

Exemple :

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

Cela pourrait vous aider : Surcharge de l'opérateur

Regards, Erwald

2voto

Graham Borland Points 27556

Le problème est là :

if(new_t1[i] == p1){

Le compilateur ne sait pas comment comparer deux Player à moins que vous ne l'indiquiez explicitement en implémentant l'option operator== . Voir la section "Opérateurs de comparaison" de ce guide .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X