假设我们有一个声明如下的类:
class A {
private:
CWnd wnd;
public:
A(CString) {}
...
};
现在创建一个A
的对象:
auto a = A{ CString{} };
编译器报告:
error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'
该代码有什么问题?
此问题有一个解决方法:将构造函数的签名更改为A(const CString&)
可以解决问题。但我想知道为什么会报告错误。
答案 0 :(得分:0)
CWnd构造函数是私有的。建议您从CWnd(或某些派生类)派生一个类,并使用指针作为您的成员变量。使用其中一个用于此目的的MFC函数动态创建窗口。