0

次のように辞書を作成した.hファイルがあります:-

map < char, string > mydictionary;

値を次のように入力します:-

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

プロジェクトをビルドしようとすると、上記の2行でエラーが発生しC++ requires a type specifier for all declarationsます。残念ながら、エラーメッセージは非常にわかりにくいものであり、どのようにアプローチ/解決するかがわかりません。

なぜこのエラーが発生するのですか?どうすればこの問題を解決できますか?

4

2 に答える 2

4

ステートメントをグローバルスコープに置くことはできません。ステートメントは関数にのみ入れることができます。(これは、グローバルスコープに入ることができる変数初期化子とは異なることに注意してください)。

関数でマップを初期化するか、(C ++ 11では)初期化子リストを使用する必要があります。

map < char, string > mydictionary {{'a', "asdf"}, {'b', t}};
于 2012-10-06T17:48:21.697 に答える
2

あなたはこれらを持つことはできません

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

関数の外。それらを関数内で移動する必要があります(mainまたは他の関数内で、それを呼び出します)。

定義または宣言とは異なるものはすべて関数内に配置する必要があります。

于 2012-10-06T17:46:54.667 に答える