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:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
class Conteneur
{
  private:
    Objet m_obj;
};
Un classe Objet qui contient des 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();
};
Et donc une classe param�tres:
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();
}
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
void Conteneur::initializeObj()
{
  double p1 = ...;
  double p2 = ...;
  ...
  double pN = ...;
  m_obj.initilizeParam(p1,...,pN);
}
Et que dans Object.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);
}
Param.cpp:
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)
{
}
Le probl�me et le suivant
* 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:

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
}
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.

Y a vraiment quelque chose qui m'�chappe.

Merci de votre aide.