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
Libérer: 2024-12-02 11:42:16
original
424 Les gens l'ont consulté

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

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal