由于我使用的不是相当C++ 11的编译器(VS 11),因此出现链接器错误,有关防止复制ctor或赋值运算符。都是花花公子,但问题是我不能将我的类(class)放在std::map
中,其中键是uin32_t
,值是我的类(class)。我什至尝试过emplace
,但是它不起作用。
我正在考虑将std::move
转换为unique_ptr
的map
,但不希望不重新设计容器。那么,有什么优雅的方法可以做到这一点(优雅==不同于将虚拟对象放入 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");