Date: 2014jul18
Language: C++
Platform: Windows
Product: Visual C++
Q. What is causing this error when I compile my program:
c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(1820) : error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
1> c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(558) : see declaration of 'CObject::CObject'
1> c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(529) : see declaration of 'CObject'
1> This diagnostic occurred in the compiler generated function 'CCmdTarget::CCmdTarget(const CCmdTarget &)'
A. You are trying to access the copy constructor of something that doesn't
want to you. Its probably a MFC class or a class you made that extends a MFC class. Here is some code that caused it for me:
class MyCustomClass : CWnd
{
};
class MyOtherClass
{
MyCustomClass m_custom;
public:
// Attempting to return a reference to a class based on CWnd doesn't work
MyCustomClass &GetCustomClassReference()
{
return m_custom;
}
// This way works
MyCustomClass *GetCustomClassPointer();
{
return &m_custom;
}
};
SomeFunction()
{
MyOtherClass something;
MyCustomClass custom = something.GetCustomClassReference();
}