Problème avec les operators overloaded
Ami du soir, bonsoir !
C'est re-l'enquiquineur de service !
J'espère que je ne flood pas trop... mais je ne sais pas si c'était une bonne idée de mettre un problème complètement différent à la suite de mon précédent message. J'ouvre donc ce nouveau topic...
Voila, je voudrais overloader l'operator "+" d'une classe.
Mon main :
Code:
1 2 3 4
| player play1 = player(1 , "Kimy_Ire"); //créer un joueur
card card1 = card(); //créer une carte
play1 = play1 + card1; //serait sencé attribuer une carte à un joueur
play1.info(); //vérification |
Vous l'aurez compris, je souhaiterai pouvoir ajouter un élément "card" à un joueur avec le signe "+".
Mon player.h :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class player
{
private:
int id;
std::string name;
bool GM;
bool mayor;
int t;
card player_card;
public:
player(int id_player, std::string name_player);
//Liste de toutes les méthodes...
player operator + (card c);
}; |
Mon player.ccp :
Code:
1 2 3 4 5 6 7 8 9 10
| void player::give_card(card c)
{
player_card = c;
}
player player::operator + (card c)
{
give_card(c);
} |
J'ai retiré toutes les mentions inutiles. Bref, j'ai un soucis de compréhension, je pense. Je ne sais pas pourquoi cela plante. En effet, je n'ai pas de message d'erreur mais le compilateur plante complètement...
J'ai essayé de remplacer toutes les "card c" par des "card *c" ainsi qu'aux endroits appropriés lors des définitions mais cela m'a juste conduit à avoir des erreurs de compilation du type :
Citation:
no match for 'operator+' in 'play1 + *card1'
J'ai essayé l'ajout de "return this" à la fin de "player player::operator + (card c)" sans réel succès...
J'espère que vous pourrez m'aider !
Merci infiniment du temps que vous prendrez pour moi par avance !
Kimy from Ireland.