2

我无法理解为什么这不会编译:

#include <map>
#include <string>

std::map<std::string, std::string> m;
m["jkl"] = "asdf";

我收到此编译器错误

Line 5: error: expected constructor, destructor, or type conversion before '=' token compilation terminated due to -Wfatal-errors.

我发誓我一定在这里遗漏了一些简单的东西。

4

2 回答 2

5

m["jkl"] = "asdf"是一个表达式。您不能在函数体之外拥有自己的表达式。函数体之外唯一允许的就是声明和定义。

于 2012-06-12T10:30:47.027 回答
2

该分配需要在函数内(即块范围)。如果要初始化地图,则必须在定义时进行。是一个相关的 SO 问题(关于map在文件范围内初始化)。

于 2012-06-12T10:31:05.700 回答