Traiter les getters dupliqués avec élégance
Les rencontres avec des méthodes de getter redondantes pour les variables en double, const et non const peuvent être frustrantes. Prenons l'exemple :
class Foobar { public: Something& getSomething(int index); const Something& getSomething(int index) const; };
L'implémentation de l'une ou l'autre méthode avec l'autre est impossible en raison de l'impossibilité d'invoquer la version non const à partir de la méthode const. Un cast est nécessaire pour appeler la version const à partir de la version non const.
Une solution pratique
Bien qu'il n'y ait pas de solution parfaite, une approche pragmatique consiste à mettre en œuvre la version non const en supprimant le const de la version const. Malgré sa simplicité, cette méthode garantit la sécurité. Étant donné que la fonction membre appelant n'est pas const, l'objet est également non const, ce qui permet d'effectuer la conversion.
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } private: int foo; };
En utilisant cette approche, vous pouvez éliminer le besoin de méthodes getter dupliquées et maintenir la sécurité de votre code.
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!