Maison > développement back-end > C++ > Comment puis-je gérer élégamment les getters en double en C ?

Comment puis-je gérer élégamment les getters en double en C ?

DDD
Libérer: 2024-12-07 19:43:12
original
527 Les gens l'ont consulté

How Can I Elegantly Handle Duplicate Getters in C  ?

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;
};
Copier après la connexion

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;
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal