Gestion gracieuse des getters en double, const et non const
En tant que programmeurs, nous rencontrons souvent le problème d'avoir à la fois const et non const -versions const des méthodes getter dans nos classes. Bien que leur mise en œuvre séparément puisse conduire à une duplication de code, trouver une solution élégante à cette énigme peut s'avérer difficile.
Le défi
Dans l'exemple fourni, la classe Foobar nécessite deux méthodes getSomething() : une non-const (Something& getSomething(int index)) et une const (const Something& getSomething(int index) const). Cependant, essayer d’implémenter ces méthodes avec les autres entraîne inévitablement des erreurs du compilateur. Caster la version non-const à partir de la version const est également un mal nécessaire.
La solution élégante
Bien qu'une solution absolument parfaite ne soit pas réalisable, le plus souvent L'approche recommandée consiste à supprimer le const de l'autre fonction. Bien que ce ne soit pas vraiment esthétique, il s'agit d'une technique sûre puisque la fonction membre appelante n'est pas const, ce qui signifie que l'objet lui-même n'est pas const et que la suppression de la const est autorisée.
Considérez l'extrait de code suivant comme un exemple :
class Foo { public: const int& get() const { // non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } };
Dans cet exemple, la version non-const de get() supprime le const de la version const, lui permettant de modifier le objet lui-même.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!