2013-09-10 2 views
2

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

std::map <MESSAGE_CATEGORY, const std::string> m_mapResponseDesc;

Я использую operator[] для добавления значения в карте:

m_mapResponseDesc[STATUS_LIMIT] = "Limit has been exceeded"; 

STATUS_LIMIT имеет тип enum.

Я получаю сообщение об ошибке:

error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)

Пожалуйста, укажите, что ошибка, которую я сделал. Я не понимаю.

ответ

8

С operator[] возвращает ссылку (на const std::string), вместо этого вам необходимо использовать метод insert().

#include <map> 
#include <string> 
using namespace std; 

int main() 
{ 
    std::map<int, const std::string> m; 
    m.insert(std::make_pair(1, "Hello")); 
    return 0; 
} 
+0

Я не очень понял, когда вы говорите [] возвращает ссылку. Любой ссылочный объект = что-то // возможно. Прошу прощения, если это очень простой вопрос. –

+1

Объект ссылки разрешает присвоение, если оно не является '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' то, что вы видели). – Chad

+0

Спасибо @Chad. Я понял.. –

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