請看下面的例子:爲什麼下面不工作時,地圖是量靜態
enum class DOG_TYPE {SHEPHARD, COLLIE,UNKNOWN};
static const std::map<std::string,DOG_TYPE> dogMap = {
{"GS",DOG_TYPE::SHEPHARD}
};
DOG_TYPE getDogType(const std::string& dogtype)
{
if(dogMap.find(dogtype) != dogMap.end())
{
return dogMap[dogtype]; -->Does not work when std::map is constant
}
}
int main()
{
DOG_TYPE j = getDogType("GS");
std::cout << int(j);
}
在上面的例子中陳述return dogMap[dogtype];
返回錯誤
error: passing 'const std::map<std::__cxx11::basic_string<char>, DOG_TYPE>' as 'this' argument discards qualifiers [-fpermissive]
return dogMap[dogtype];
我想知道爲什麼這發生了,爲什麼不能映射爲const static
?
相關:[爲什麼std :: map沒有const訪問器?](http://stackoverflow.com/questions/13902742/) –