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
Pour faciliter votre réponse voila ce que me sort le compilo chez moi :
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; }
Je precise que j'ai regardé sur le forum et dans la FAQ sans succés. J'espère ne pas avoir mal regardé..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![]()
En vous remerciant
++
Partager