1

假设我们有一个类声明如下:

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&)可以解决问题。但我想知道为什么会报告该错误。

4

1 回答 1

0

CWnd 构造函数是私有的。建议您从 CWnd(或某些派生类)派生一个类,并使用指针作为您的成员变量。使用用于此目的的 MFC 函数之一动态创建窗口。

于 2015-01-19T22:43:28.823 回答