Quel est le type de P1 ?
Version imprimable
Quel est le type de P1 ?
P1 est un PaquetDeCarte, c'est donc un tableau de 52 pointeurs vers Carte.
C'est ce que tu voulais savoir?
Et l'erreur dit que tu n'as pas défini de surcharge de l'opérateur << pour ostream et PaquetDeCarte.
Le prototype d'une telle fonction doit être du genre:
Code:
1
2
3
4
5
6
7 std::ostream & operator<< (std::ostream &o, PaquetDeCarte const &p) { //Faire ce qu'il faut pour l'affichage du contenu de p //... return o; }
J'ai justement définit mon opérateur << pour qu'il m'affiche une carte dans le genre "deux de coeur".
quand je fais le code:
cout << P1;
je veux juste qu'il m'affiche les 52 cartes.
si je dois quand même surcharger l'opérateur <<, est-ce que je peux le faire dans ma classe PaquetDeCarte tout en sachant que je l'ai déjà surchargé dans ma classe Carte ou est-ce que cela va poser problème?
La surcharge se fait à l'extérieur de toute classe, pour le <<.
Mais il n'y a aucun problème pour faire une surcharge par type, tu sais...
qu'entends tu par "surcharge par type" est ce que je pourrais avoir un exemple, même pas concret?
C'est pourtant simple:
Deux types, deux surcharges de l'opérateur <<. Une par type.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 //Deux types: class UneClasse { //... }; class UneAutreClasse { //... }; //Deux surcharges std::ostream & operator<< (std::ostream &o, UneClasse const &uc) { //... return o; } std::ostream & operator<< (std::ostream &o, UneAutreClasse const &uac) { //... return o; }
Ok merci, j'avais un doute mais c'est bon j'ai compris!
Je vais m'atteler à ça
Bon ça va j'ai bien cerné le problème maintenant,
Mais j'ai une autre question (désolé de vous ennuyer comme ça...)
J'ai fait une méthode pour echanger des valeurs de pointeur (pour mélanger mes cartes)
voila ce que ça donne:
Code:void melanger ((Carte*)& P1, (Carte*)& P2);
Dois-je surcharger l'operateur = pour que cela fonctionne?Code:
1
2
3
4
5
6
7 void PaquetDeCarte::melanger ((Carte*)& P1, (Carte*)& P2) { Carte* ptr; ptr=P2; P2=P1; P1=ptr; }
Non pas besoin, par contre, tu dois peut-etre avoir un probleme pour compiler car les parentheses qui entourent les (Carte*) sont interprétées comme des cast C-style. Donc vire les.
Et je te conseillerai d'utiliser des références (plus pratiques à utiliser à mon avis) .