CMap with CArray Inside it
CMap with CArray Inside it
我有一个 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容器,因为标准容器是不受这些限制的替代方案。仅当MFC容器是显而易见的选择,并且在GUI代码的上下文中完全有意义。否则依靠标准容器。
std::map<int, std::vector<USER_NAME>> *m_mUserNameMap;
但是,问自己是否真的必须使用MFC容器
我本人会说,是的。MFC比标准LIB最喜欢。两个原因:
---一个例子:YouTube视频:C Now 2018:Z. Laine" Boost.Text:修复STD :: String,并将Unicode添加到标准C (第1部分("https://www.youtube.com/watch?v=944gjkxwmbo -STD :: String显然非常低效。另外,似乎标准图书馆缺乏专用的支持……如果他们可以修复它,他们会。很像Linux世界中发生的事情。
----另一个原因:论坛线程发布在www.cplusplus.com: Linux开发人员威胁要拉"杀死开关"http://www.cplusplus.com/forum/lounge/243067/ - 虽然Linux不是标准库...它们都是开源资源...太接近了舒适。
- Klocwork Inside的资源泄漏
- 为什么我会" void value not ignored as it ought to be"?
- 为什么当我为 for(auto& it : myUnorderedMap) {... = std::move(it.second)} 时,我会得到一个 const 引用?
- Is it good to use SDL_PIXELFORMAT_UNKNOWN?
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- 将外部库"inside"项目中移动
- QString::utf16(): Is it UB or not?
- 我正在"void value not ignored as it ought to be"我该怎么办?
- GotW #88 中的"It doesn’t work for references that are members of objects"是什么意思?
- 如何使用set<pair<int,int> >::iterator itrator it迭代set<pair<int,int> >st中的值?
- CMap with CArray Inside it
- 这个给定的代码应该将给定的数字转换为尽可能滞后的数字,no.by 用 9.It 替换合适的数字是行不通的
- 为什么在使用 auto&&it=--vec.end(),是 UB 时自动推导左值引用?
- OpenCV cv::Mat "+=" inside for loop
- 您可以使用C 从在线编译器(repl.it)打开文件吗?
- 如何修复类"Invalid operands to binary expression "类" to "类" "错误 (repl.it)
- 在 std::list 中,std::d istance(it.begin(), std::p rev(it.end()
- 尝试分配函数指针时获取"Void value not ignored as it ought to be"
- 创建结构并传递IT功能
- C++ RVO: when it happens?