1
 enum aaa {a, b, c};

 std::map <aaa, int> container;

 container[0]; //compilation error

この場合、コンテナーが空で、segfault が発生することはわかっていますが、それは問題ではありません。Enum は算術型なので、なぜ問題があるのでしょうか?

4

3 に答える 3

6

あなたは両方の点で間違っています。:)

int暗黙的に に変換できずenum明示的なキャストが必要container[0]であり、マップ内の新しい値を値で初期化するため、segfault は発生しません。

于 2013-01-29T13:36:20.430 に答える
1

コンテナのキー タイプはaaa. の型は0ですintintは暗黙的に に変換できないaaaため、コンパイラ エラーが発生します。

于 2013-01-29T13:35:52.360 に答える
1

コンパイラは、キーのタイプが であることを期待していますaaa。ですからcontainer[a]、何をするかではなく、書く必要があります。

于 2013-01-29T13:35:58.847 に答える