Probleme avec la surcharge de l'operateur <<
Bonjour, j'etais en train de rafraichir mon c++ , j'ai donc tente de coder une liste simplement chainee.
voici le code , et apres les questions.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#include <iostream>
using namespace std;
class ll{
private:
typedef struct elem{ //ne pas oublier le elem ici aussi
struct elem* next;
int val;
}elem;
elem* head;
int nbElem;
public:
ll():head(NULL),nbElem(0){};
~ll()
{
elem* newLink;
newLink=head;
while (head!=NULL)
{
head=head->next;
delete newLink;
newLink=head;
}
}
int addLink(int _val)
{
elem* newLink= new elem;
if (newLink==NULL)
return -1;
newLink->val=_val;
newLink->next=head;
head=newLink;
++nbElem;
return 0;
}
friend ostream& operator<<(ostream& out, const ll& liste);
void print()
{
elem *cur;
cur=head;
while (cur!=NULL)
{
cout<<cur->val<<" ";
cur=cur->next;
}
cout<<head<<" ";
cout<<endl;
}
};
ostream& operator<<(ostream& out, const ll& liste)
{
struct ll::elem *cur;
// cur=const_cast<ll::elem*>(liste.head);
cur=liste.head;
cout<<cur<<" "<<liste.head<<endl;
cout<<liste.nbElem<<" ";
while (cur!=NULL)
{
out<<cur->val<<" ";
cur=cur->next;
}
return out;
}
int main(int argc, char** argv)
{
ll* liste=new ll;
liste->addLink(1);
liste->addLink(2);
liste->addLink(3);
liste->print();
cout<<liste<<endl;
} |
La methode print marche correctement , mais la surcharge de << donne des resultats suspects... j'ai affiche la valeur de head dans les 2 fonctions et ils semblent que les valeurs soient differentes.
Citation:
D:\VS2008\VC>source
3 2 1 00551BC0
00551B90
Est ce que vous savez d'ou vient le soucis ?
Merci.