[C++] initialiser les references
Résolu
kiroukou
Messages postés
22
Statut
Membre
-
mathieuS -
mathieuS -
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 :D
Pour faciliter votre réponse voila ce que me sort le compilo chez moi :
Je precise que j'ai regardé sur le forum et dans la FAQ sans succés. J'espère ne pas avoir mal regardé.. :roll:
En vous remerciant
++
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 :D
#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é.. :roll:
En vous remerciant
++
A voir également:
- [C++] initialiser les references
- Impossible d'initialiser le périphérique prn ✓ - Forum Autoit / batch
- Impossible d'initialiser le dispositif d'affichage lol - Forum jeux en ligne
- Excel a rencontré un problème au niveau d'une ou de plusieurs références de formules - Forum Bureautique
- Excel a rencontré un problème au niveau d'une ou de plusieurs références - Forum Excel
- Il existe une ou plusieurs références circulaires - Forum Excel
5 réponses
Pour finir le travail, voici le lien vers le topic sur Développez.com :
https://www.developpez.net/forums/d27498/c-cpp/cpp/debuter/debutant-probleme-initialisation-references/
https://www.developpez.net/forums/d27498/c-cpp/cpp/debuter/debutant-probleme-initialisation-references/
Tiens c'est marrant, ce post me dit qq chose...
c'est con, les copier/coller des posts de developpez.com ne marche pas avec les :roll: ;-) tu peux retourner voir ton post sur l'autre site, il y a des réponses =)
c'est con, les copier/coller des posts de developpez.com ne marche pas avec les :roll: ;-) tu peux retourner voir ton post sur l'autre site, il y a des réponses =)
Oui en effet, et j'ai pas honte :)
A des forums différents correspond des gens differents et donc des reponses differentes :) Cela me permettrai de voir les diverses possibilitées :)
Merci de ta reponse dans tout les cas :D
++
A des forums différents correspond des gens differents et donc des reponses differentes :) Cela me permettrai de voir les diverses possibilitées :)
Merci de ta reponse dans tout les cas :D
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah mais tu n'as pas avoir honte du tout! au contraire!
je suis pareil que toi : si je navigue entre les 2 forums, c'est que les 2 sont différents et très intéressants!
et comme tu dis, c'est dans la différence qu'on trouve la complémentarité et ce qui nous convient !
ET QUE VIVE LES FORUMS !!!! =)))
je suis pareil que toi : si je navigue entre les 2 forums, c'est que les 2 sont différents et très intéressants!
et comme tu dis, c'est dans la différence qu'on trouve la complémentarité et ce qui nous convient !
ET QUE VIVE LES FORUMS !!!! =)))