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
DDDoriginal
2024-12-07 19:43:12521parcourir

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;
};

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!

Déclaration:
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