[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 !!!! =)))