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 に答える