2016-01-22 3 views
0

Я хочу использовать ссылку в станде :: Картаиспользования ссылка в станде :: Карта

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 

Как я могу это исправить?

+5

Это не имеет никакого отношения к 'std :: function'. В следующий раз выполните некоторые эксперименты, такие как удаление «std :: function» и выяснение, остается ли ваша проблема (что она делает). Кроме того, приведите свои собственные [testcases] (http://stackoverflow.com/help/mcve) в свои вопросы: здесь ваше сообщение об ошибке жалуется на 'operator []', но вы никогда не показываете нам на самом деле, используя 'operator [] '. Это чистый шанс, что мы можем решить проблему для вас независимо. –

ответ

3

Определите ваши map как:

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

STL контейнеры не поддерживают ссылки, потому что они требуют, чтобы их тип элемента соответствует требованиям очищаемых, в которых ссылки случае не.

+0

Это работает для меня, спасибо – rontgen

Смежные вопросы