Bonjour,
J'ai un probl�me avec un getter et je ne comprends absolument pas pourquoi.
Je vais essayer d'exposer la situation.
Si on a une classe Conteneur par exemple:
Un classe Objet qui contient des param�tres:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 class Conteneur { private: Objet m_obj; };
Et donc une classe param�tres:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 class Objet { private: Param m_param; public: Param& getParam(); };
Maintenant si on ajoute une m�thode pour initialiser l'attribut m_obj:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 class Param { private: double m_p1; double m_p2; ... double m_pN; public: double getP1() const; void setP1(); }
Et que dans Object.cpp:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 void Conteneur::initializeObj() { double p1 = ...; double p2 = ...; ... double pN = ...; m_obj.initilizeParam(p1,...,pN); }
Param.cpp:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 void Objet::initializeParam(double& p1, double& p2, ..., double& pN) { m_param = Param(p1, .., pN); }
Le probl�me et le suivant
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 Param::Param(double& p1, ..., double& pN) : m_p1(p1), ..., m_pN(pN) { }
* lorque j'initialise les param�tres � travers le constructeur et qu'ensuite on lit ces valeurs (avec un getter, par exemple getP1()) il n'y a pas de probl�me, la valeur � bien �t� initialis�e
* par contre, si apr�s l'initilisation je modifie une valeur d'un param�tre (par un setter) et que je lis ensuite la valeurs du param�tre, la valeur renvoy�e est celle initialis�e par le construteur et non celle modifi�e par le setter, exemple:
Quand j'affiche la valeur dans le setter de la classe Param, j'ai bien 3.14, mais d�s qu'on acc�de � la valeur par le getter, il renvoie toujours la valeur initialis�e dans le constructeur, � savoir 1.5.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 void Conteneur::method() { initializeObj(); // les paramètres sont tous bien initilisés std::cout"<<\n p1 = "<<getObj().getParam().getP1(); // par exemple p1 = 1.5 ici // si ensuite double p1 = 3.14; getObj().getParam().setP1(p1); std::cout"<<\n p1 = "<<getObj().getParam().getP1(); // p1 vaut encore 1.5 au lieu de 3.14 }
Y a vraiment quelque chose qui m'�chappe.
Merci de votre aide.
Partager