don*_*y76 0 c++ mfc visual-c++
我有这样的typedef结构:
typedef struct
{
int id;
CString name;
} USER_NAME;
CMap<int,int, CArray<USER_NAME>, CArray<USER_NAME>> * m_mUserNameMap;
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误C2248:'CObject :: CObject':无法访问类'CObject'中声明的私有成员
不知道发生了什么!! 欢迎任何帮助.
我试着制作m_mUserNameMap不是指针,并在该行中给出了上述错误.
使用a CMap要求值类型是可复制构造和可分配的,但这些操作被标记为私有的CObject派生类,例如CArray.这就是你收到错误信息的原因.
您不能像尝试那样声明地图.你可以做的是将值类型作为指针.那么你将把数组的地址添加到地图而不是数组本身,它会期望一个副本.
CMap<int, int, CArray<USER_NAME> *, CArray<USER_NAME> *> *m_mUserNameMap;
Run Code Online (Sandbox Code Playgroud)
但是,问问自己是否真的必须使用MFC容器,因为标准容器是不受这些限制的替代品.仅当MFC容器是明显的选择并且在GUI代码的上下文中完全有意义时才使用它们.否则依赖标准容器.
std::map<int, std::vector<USER_NAME>> *m_mUserNameMap;
Run Code Online (Sandbox Code Playgroud)