Bonjour à tous,
Voila j'avance doucement avec le C++ mais il y a des choses qui m'échappent encore
Je vous joins ma classe, j'ai mis des commentaires là où il y a des problèmes.
D'autres fichiers sont nécéssaires pour compiler, mais je pense que mon probleme est tellement simple que vous n'aurez pas besoin de tester, en regardant ca devrai vous suffir
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
//Classe abstraite qui servira de base pour tous les autres objets du projet
class Basic
{
	public :
			CompilManager& 	_rManager;
			Basic&		_rFils;
			Basic&		_rParent;
			Basic&		_rSuivant;
			int		_id;
 
			//Constructeurs
			Basic(CompilManager&, Basic&, Basic&, Basic&);
			Basic(CompilManager&);
			//Constructeur de copie
			Basic(const Basic& b)
			:	_rManager (b._rManager)	,
				_rParent (b._rParent)		,
				_rSuivant (b._rSuivant)		,
				_rFils (b._rFils)			
			{
				_id = b._id; //On peut pas mettre getId car le parametre est en const!! A se souvenir	
			}
			// DESTRUCTEUR
			inline ~Basic(){ std::cout << "Basic detruit" << std::endl; }
 
			//Methode virtuelle pure , qui fait de cette classe une classe abstraite
			virtual string	convertASM(void) = 0;
			//Getters
			Register& 		getFreeRegister(const int) const;
			Basic& 		getNext(void) const;
			Basic& 		getParent(void) const;
			Basic& 		getChild(void) const;
			CompilManager& 	getManager(void) const;
			int			getId(void) const;
			//setters
			void 			setNext(Basic&);
			void 			setChild(Basic&);
			void 			setParent(Basic&);
			void 			setManager(CompilManager&);
 
//Ne ps oublier ce *!&$ù*" de point virgule a  la fin !!			
};
 
Basic::Basic(CompilManager& manager)
	://Initialisation des references  => erreurs comme quoi les autre references ne sont pas initialisées pourquoi et comment??
	_rManager(manager)			
{
	_id = _rManager.getId();
	cout << "Basic instancie" << _id << endl;
}
 
 
Basic::Basic(CompilManager& manager,Basic& parent, Basic& suivant, Basic& fils)
	://Initialisation des references
	_rManager(manager)	, 
	_rParent(parent)		,
	_rSuivant(suivant)		, 
	_rFils(fils)		
{
	_id = _rManager.getId();
	cout << "Basic instancie" << _id << endl;
}
 
 
Register& Basic::getFreeRegister(const int type ) const
{	
	Register r;
	return r; //Warning ici mais c'est normal, c'est juste un code temporaire
	/*
	if( _rManager.getRegisterManager().getFreeRegister(type, r) == false )
	{
		cout << "Basic.getFreeRegister / Impossible d'avoir un registre de libre "<<endl;
	}
	return r;
	*/
}
 
Basic& Basic::getNext(void) const
{
	return  _rSuivant;
}
 
Basic& Basic::getParent(void) const
{
	return _rParent;
}
Basic& Basic::getChild(void) const
{
	return _rFils;
}
CompilManager& Basic::getManager(void) const
{
	return _rManager;
}
int Basic::getId(void) const
{
	return _id;
}
 
 
void 	Basic::setNext(Basic& b)
{
	_rSuivant = b; // Le compilo semble détester cette synthaxe ....  Pourquoi?
}
void Basic::setChild(Basic& b)
{
	_rFils = b;
}
void Basic::setParent(Basic& b)
{
	_rParent = b;
}
 
void Basic::setManager(CompilManager& c)
{
	_rManager = c;
}
Pour faciliter votre réponse voila ce que me sort le compilo chez moi :
In file included from main.cpp:14:
classes/Basic/Basic.h: In constructor `Basic::Basic(CompilManager&)':
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rFils'
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rParent'
classes/Basic/Basic.h:53: error: uninitialized reference member `Basic::_rSuivant'
classes/Basic/Basic.h: In member function `Register& Basic::getFreeRegister(int) const':
classes/Basic/Basic.h:73: warning: reference to local variable `r' returned
classes/Basic/Basic.h: In member function `Basic& Basic::operator=(const Basic&)':
classes/Basic/Basic.h:109: error: non-static reference member `CompilManager&Basic::_rManager', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rFils', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rParent', can't use default assignment operator
classes/Basic/Basic.h:109: error: non-static reference member `Basic&Basic::_rSuivant', can't use default assignment operator
Je precise que j'ai regardé sur le forum et dans la FAQ sans succés. J'espère ne pas avoir mal regardé..

En vous remerciant
++