I decided in the middle of my project to make my project follow coding standard, and be more secure and encapsulated.
For me, a small macro definition changed everything just by disabling coping for all objects and preventing generation of default copy constructor and assignment operator.
#define DISABLE_COPY(CLASS_NAME) \
private: \
CLASS_NAME ( const CLASS_NAME & ); CLASS_NAME & operator = ( const CLASS_NAME & );
Inside your class, add this macro with the class name as parameter; just beside DECLARE_MESSAGE_MAP
macro, for example.