其他分享
首页 > 其他分享> > c – 如何在地图中放置一个“删除”复制ctor和赋值运算符的类?

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