我有这样的typedef
结构:
typedef struct
{
int id;
CString name;
} USER_NAME;
CMap<int,int, CArray<USER_NAME>, CArray<USER_NAME>> * m_mUserNameMap;
在CPP文件中:
CArray<USER_NAME> sUName;
sUName.id = 10;
sUName.name = "Test it!!!";
m_mUserNameMap = new CMap<int,int, CArray<USER_NAME>, CArray<USER_NAME>>;
m_mUserNameMap->SetAt(1, sUName);
我收到以下错误:
错误C2248:“ CObject :: CObject”:无法访问在类“ CObject”中声明的私有成员
不知道发生了什么!欢迎任何帮助。
我尝试使
m_mUserNameMap
不是指针,并且在该行本身中给出了以上错误。 最佳答案
使用CMap
要求值类型可以是可复制构造的和可分配的,但对于CObject
派生的类(例如CArray
),这些操作被标记为私有。这就是为什么您收到该错误消息的原因。
您无法像尝试那样声明地图。您可以做的是将值类型用作指针。因此,您需要将数组的地址添加到地图中,而不要添加将要复制的数组本身。
CMap<int, int, CArray<USER_NAME> *, CArray<USER_NAME> *> *m_mUserNameMap;
但是,请问一下自己是否真的必须使用MFC容器,因为标准容器是不受这些限制的替代方法。仅当它们是显而易见的选择并且在GUI代码的上下文中具有完全意义时,才使用MFC容器。否则,请依靠标准容器。
std::map<int, std::vector<USER_NAME>> *m_mUserNameMap;
关于c++ - 内含CArray的CMap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49521861/