Maison >développement back-end >C++ >Comment puis-je éviter les getters en double pour les fonctions membres Const et non Const en C ?

Comment puis-je éviter les getters en double pour les fonctions membres Const et non Const en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 11:42:16389parcourir

How Can I Avoid Duplicate Getters for Const and Non-Const Member Functions in C  ?

Solution élégante pour dupliquer les getters pour les objets Const et non-Const

Lorsqu'ils traitent des getters en C, les développeurs sont souvent confrontés au dilemme d'avoir pour créer des implémentations distinctes pour les versions const et non const. Cela peut être gênant lorsque la logique des deux getters est largement similaire.

Une solution potentielle à ce problème consiste à implémenter la version non const en supprimant le const de la version const. Cette approche est considérée comme sûre car la fonction appelante est non-const, ce qui implique que l'objet lui-même est non-const, permettant la conversion.

Par 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());
    }
};

Cette approche n'est peut-être pas esthétique, mais il garantit la sécurité et évite dans de nombreux cas le besoin de mises en œuvre séparées. Cela permet aux développeurs de se concentrer sur les fonctionnalités de base des getters plutôt que de dupliquer le 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