在std :: map中使用reference

时间:2016-01-22 09:59:00

标签: c++ c++11

我想在std :: map

中使用引用
typedef const std::function<void(const cocos2d::Ref*)>& callBack;

std::map<const std::string&, callBack> m_mapListener

我的错误信息是:

error C2535: 'const std::function<void (const cocos2d::Ref *)> &std::map<const std::string &,callBack,
std::less<_Kty>,std::allocator<std::pair<_Kty,_Ty>>>::operator [](const std::basic_string
<char,std::char_traits<char>,std::allocator<char>> &)' : 
member function already defined or declared 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\map

我该如何解决?

1 个答案:

答案 0 :(得分:3)

将您的map定义为:

std::map<std::string, callBack> m_mapListener;

STL容器不支持引用,因为它们要求它们的元素类型符合Erasable的要求,在这种情况下引用不是。