No match for 'operator==' C++ erreur de compilation
Une autre question à partir d'un C++ débutant.
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?
Avez-vous mis en œuvre les
operator==
fonction pour Player
classe?
OriginalL'auteur user1332364 | 2012-04-13
Vous devez vous connecter pour publier un commentaire.
Le compilateur ne sait pas ce que cela signifie pour les deux joueurs à faire de même. Sont-ils les mêmes si leurs noms sont les mêmes? Ou de leurs Id? Vous devez définir l'opérateur == pour
class Player
.Aussi, je ne pense pas que votre
swap()
fonction a un effet droite maintenant. Vous pouvez le changer à accepterTeam
s etPlayer
s par référence.const
est illégal sur une fonction libre.que faire si nous voulons juste pour vérifier si il est nul ou pas
OriginalL'auteur George Skoptsov
Vous avez besoin de surcharger l'opérateur == pour votre catégorie de Joueur. Dans d'autres, vous devez indiquer au compilateur que comparer à l'intérieur de votre objet de Joueur.
Exemple :
bool MyClass::operator==(const MyClass &other) const {
... //Compare the values, and return a bool result.
}
Pourrait vous aider : La Surcharge De L'Opérateur
Ce qui concerne,
Erwald
OriginalL'auteur Erwald
Le problème est ici:
Le compilateur ne sait pas comment faire pour comparer deux
Player
objets, sauf si vous explicitement dire par la mise en œuvre deoperator==
. Voir les "opérateurs de Comparaison" section de ce guide.OriginalL'auteur Graham Borland