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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.

D:\VS2008\VC>source
3 2 1 00551BC0
00551B90
Est ce que vous savez d'ou vient le soucis ?

Merci.