4

我想创建一个地图,

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

operator[]用来在地图中附加一个值:

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

STATUS_LIMIT是类型enum

我收到错误:

错误 C2678:二进制“=”:未找到采用“const std::basic_string<_Elem,_Traits,_Ax>”类型的左操作数的运算符(或没有可接受的转换)

请指出我犯了什么错误。我没有任何线索。

4

1 回答 1

11

由于operator[]返回一个引用(对 a 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;
}

C++11 更新:

您现在可以更轻松地执行此操作:

std::map<int, const std::string> status = {
        {200, "OK"},
        {404, "Not Found"}
    };
于 2013-09-10T15:20:14.223 回答