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