Bonjour à tous,
J'ai une classe englobant une valeur. Elle possède donc deux méthodes:
- Une pour récupérer la valeur
- Une pour définir la valeur
J'ai une autre classe qui englobe celle ci dessus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class C1 { SetValue(const& Obj); const Obj& GetValue() const; };
Je ne l'ai pas mis en const car la valeur dans m_oC1 pourra être modifiée en faisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class C2 { C1& GetC1(); private: C1 m_oC1; }
Mais à un autre endroit de mon code, on a pas à remplacer cette valeur, donc j'ai proposé une méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part oC2.GetC1().SetValue(valeur)
Le soucis c'est que la méthode "GetC1()" n'est pas const, donc le compilateur me fait une erreur lorsque j'appelle cette méthode sur un "const C2*).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaMethode(const C2* oC2) { const Obj& oObj = oC2->GetC1().GetValue(); // Erreur }
Si je mets GetC1 en const, on ne pourra plus appeler SetValue derrière.
Si je fais "void MaMethode(C2* oC2)", cette méthode pourra modifier les données.
Comment est-ce que je peux faire pour que ça fonctionne sans pour autant baisser la sécurité d'accès aux différents membres ?
Merci beaucoup
A bientôt
Partager