由于我使用的不是相当C++ 11的编译器(VS 11),因此出现链接器错误,有关防止复制ctor或赋值运算符。都是花花公子,但问题是我不能将我的类(class)放在std::map中,其中键是uin32_t,值是我的类(class)。我什至尝试过emplace,但是它不起作用。

我正在考虑将std::move转换为unique_ptrmap,但不希望不重新设计容器。那么,有什么优雅的方法可以做到这一点(优雅==不同于将虚拟对象放入 map 中,然后将其放置在值存储器中:)?

代码位是这样的:

std::map<uint32_t, LogFileWriter> m_map;

//declared not defined
public:

LogFileWriter(const LogFileWriter& other);  // commenting this makes emplace work

最佳答案



您对pair的构造函数的调用尝试将临时LogFileWriter复制/移动到pair中。将pair传递给emplace并不能阻止这种情况的发生。

你应该做mymap.emplace(source_ip, somestring+".log");

09-06 19:34