【发布时间】:2018-01-27 04:36:25
【问题描述】:
下面的代码可以正常工作:
std::map<std::string,std::ofstream*> m_jsTabFilesMap;
m_jsTabFilesMap.insert({ listOfTabNames[i], new std::ofstream(jsFilename)});
但是如果我用共享指针替换普通指针,插入函数会抱怨不存在函数insert() 的重载版本。
std::map<std::string, std::shared_ptr<std::ofstream>> m_jsTabFilesMap;
我该如何解决这个问题?这与我使用 new 实例化对象的方式有关。
【问题讨论】:
-
m_jsTabFilesMap.insert({ listOfTabNames[i], new std::ofstream(jsFilename)});改成std::map<std::string, std::shared_ptr<std::ofstream>> m_jsTabFilesMap;后还在用吗?
标签: c++ c++11 pointers shared-ptr smart-pointers