Bonjour,
Voila je suis nouveau sur le forum, j'ai épluché un peu le site à la recherche d'infos sur ce sujet, j'ai obtenu des infos intéressantes mais des questions subsistes.
Voici un petit exemple qui illustre mes interrogations :
peut on remplacer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class CRoue { private: float m_fDiametre; public: const float & GetDiametre() const; void SetDiametre(cont float & fDiametre); } class CVoiture { private: CRoue m_roue; public: const CRoue & GetRoue() const; }
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part const float & GetRoue() const;
ainsi on peut appliquer le mutateur SetDiametre() directement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part float & GetRoue();
Ou faut il garder :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void main() { CVoiture voiture; voiture.GetRoue().SetDiametre(500.0); }
et créer le mutateur du diamètre de la roue directement dans la classe CVoiture? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part const float & GetRoue() const;
Un accesseur n'est pas censé modifier la donnée qu'il retourne mais peut il retourner un pointeur sur cette donnée pour que celle ci soit modifiée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class CVoiture { private: CRoue m_roue; public: const CRoue & GetRoue() const; void SetDiametreRoue(const float & fDiametre); } void CVoiture::SetDiametreRoue(const float & fDiametre) { this->m_roue.SetDiametre(fDiametre); } void main() { CVoiture voiture; voiture.SetDiametreRoue(500.0); }
Sinon, doit on développer des mutateurs dans chaque classe contenant l'objet à modifier (ex : SetDiametre() et SetDiametreRoue() un mutateur par classe) ? Ceci alourdit le code, y'a t'il une autre solution?
Voila, j'espère avoir été clair
Merci d'avance
Partager