c – 如何在地图中放置一个“删除”复制ctor和赋值运算符的类?
作者:互联网
因为我在一个不太完整的C 11编译器(VS 11)上,我收到一个关于防止使用复制ctor赋值运算符的链接器错误.一切都是花花公子,但问题是我不能把我的类放在一个std :: map中,其中key是uin32_t,value是我的类.我甚至试过安慰,但它不起作用.
我在想std ::将unique_ptr移动到地图中,但是不想重新设计容器.那么有没有这样做的优雅方式(优雅==不喜欢在地图中放置一个假人,然后在值存储器上放置新的:)?
代码位是这样的:
std::map<uint32_t, LogFileWriter> m_map;
//declared not defined
public:
LogFileWriter(const LogFileWriter& other); // commenting this makes emplace work
解决方法:
if ( ! mymap.count(ip)) mymap.emplace(pair<uint32_t, LogFileWriter>(source_ip, LogFileWriter(somestring+ ".log")));
您对对的构造函数的调用尝试将临时LogFileWriter复制/移动到该对中.将这一对传递到安德斯不能阻止这种情况发生.
你应该做mymap.emplace(source_ip,somestring“.log”);
标签:c,assignment-operator,copy-constructor 来源: https://codeday.me/bug/20190831/1773727.html