我无法理解为什么这不会编译:
#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.
我发誓我必须在这里错过一些简单的东西。
答案 0 :(得分:5)
m["jkl"] = "asdf"
是一个表达式。你不能在函数体之外有一个表达式。函数体之外唯一允许的是声明和定义。
答案 1 :(得分:2)
该分配需要在一个函数内(即块范围)。如果要初始化地图,则必须在定义时执行此操作。 Here是一个相关的SO问题(在文件范围内初始化map
时)。