如何在地图中存储指针

新手上路,请多包涵

我正在做一个需要

class MyObj;

map<string, MyObj*> myMap;

这里的逻辑是将文件名映射到 MyObj 类。

如果我尝试插入以下内容

string strFilename = "MyFile";
MyObj* pObj  = new MyObj();

myMap.insert(strFileName, pObj); // This line throwing following error.

没有匹配函数调用 'std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, void*, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, void*> > >::insert(std::string&, void*)'

谁能帮我解决这个问题。有没有更好的方法可以使用 STL 做到这一点

原文由 Venkata 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 416
2 个回答

我已经对这些东西进行了 typedef 以使其更具可读性…

 typedef std::map<std::string, MyObj*> MyMap;
typedef std::pair<std::string, MyObj*> MyPair;

MyMap myMap;
string strFilename = "MyFile";
MyObj* pObj = new MyObj();
myMap.insert(MyPair(strFilename, pObj));

原文由 Moo-Juice 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果容器中没有带有键的元素,则 emplace 将一个新元素插入到使用给定 args 就地构造的容器中。

 myMap.emplace(strFileName, pObj);

原文由 Кирило Тимченко 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题