[POO] Syntaxe pour des accesseurs
Bonjour,
Jusqu'à présent, lorsque je faisais une classe avec des attributs auxquels je voulais accéder depuis l'extérieur, je faisais toujours mes accesseurs sur le même modèle :
type GetVariable() const { return Variable; }
Ce code, j'étais seul à l'utiliser. Donc pas de problème: je savais comment m'y prendre, et ce qu'il fallait faire.
Sauf que je viens de me rendre compte (vaut mieux tard que jamais...) que si ma variable est un pointeur, l'accesseur devient (par exemple):
int* GetX() { return X; };
où X est un "int*". Mais là, gros problème en fait: on peut modifier la valeur du X à l'intérieur de la classe par un simple déréférencement! Une solution serait de déclarer mon accesseur comme retournant un "const int*".
Mais du coup, je suis en train de me dire que je ne connais pas le sujet et qu'il a déjà dû être débattu de nombreuses fois. Paradoxalement, je ne trouve rien de bien poussé sur le sujet!
Vous, comment faites-vous vos accesseurs sur vos attributs? Par copies? Par références constantes? Par pointeurs constants? Est-ce que ça dépend du type de l'attribut? Quelle sont les recommandations à ce sujet?
Merci
Cordialement