cannot access private member error when porting MFC project

On the forum, we have surfaced another error. I had a chance today to see a real-world code with this error and actually to narrow down the problem. So if you see an error like

1>c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(259) : error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'

1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(540) : see declaration of 'CObject::operator ='

1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(510) : see declaration of 'CObject'

1> This diagnostic occurred in the compiler generated function 'CGdiObject &CGdiObject::operator =(const CGdiObject &)'

The cause of this error is that you are have a class like

class CReproClass {


CReproClass::CReproClass(void) {}

CReproClass::~CReproClass(void) {}

CPen m_pen; //or any other class that subclasses CGdiObject



class CReproClass : public CPen{


then is later used inĀ 

CReproClass a;
CReproClass b;
a = b;

This is the cause of the problem.