Surmonter l'énigme de la const pour les getters en double
Le dilemme se pose lors de l'implémentation des getters dans des classes avec des versions const et non const. Les erreurs de compilation entravent la mise en œuvre de l’une ou l’autre méthode en utilisant l’autre. De plus, le casting est nécessaire pour appeler la version const à partir de la version non const.
Une solution élégante
Effective C propose une solution non conventionnelle mais efficace : implémenter la version non const. -version const en supprimant le const de la version const. Même si elle n'est pas esthétique, cette approche garantit la sécurité puisque la fonction appelante n'est pas constante. Ainsi, il est permis de supprimer le const de l'objet const.
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()); } };
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!