在.h中添加值以映射时出现C ++错误

时间:2012-10-06 17:40:28

标签: c++ stl

我有一个.h文件,我在其中创建了一个字典,如下所示: -

map < char, string > mydictionary;

我继续将值填充为: -

string t = "test";
mydictionary['a'] = "asdf";
mydictionary['b'] = t;

当我尝试构建项目时,上面提到C++ requires a type specifier for all declarations的两行出错了。不幸的是,我发现错误信息非常神秘,我不确定如何处理/解决它。

为什么会发生此错误?我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:4)

您不能在全球范围内发表声明;语句只能用于函数。 (请注意,这与变量初始值设定项不同,后者可以在全局范围内)。

您需要在函数中初始化地图,或者(在C ++ 11中)使用初始化列表:

map < char, string > mydictionary {{'a', "asdf"}, {'b', t}};

答案 1 :(得分:2)

你不能拥有这些

mydictionary['a'] = "asdf";
mydictionary['b'] = t;

在一个函数之外。你需要在一个函数内移动它们(在main或其他一些函数中调用它)。

与定义或声明不同的任何内容必须放在函数内。