为什么我的地图分配会导致编译错误?

时间:2012-06-12 10:27:14

标签: c++ map compiler-errors

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

#include <map>
#include <string>

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

我收到了this compiler error

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

我发誓我必须在这里错过一些简单的东西。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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