Protéger les classes contre la copie ou l’assignation en C++

Pour protéger les classes contre la copie, il suffit de déclarer le constructeurs de copie en private. Une macro peut être définie car le principe est le même pour toutes les classes.

#define DECLARE_NO_COPY_CLASS(classname)  \
    private:                              \
        classname(const classname&);
#endif

De même pour les protéger contre l’assignation, on peut déclarer la surcharge de l’opérateur « = » comme étant private.

#define DECLARE_NO_ASSIGN_CLASS(classname)  \
    private:                                \
        classname& operator=(const classname&);
#endif

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *