enum aaa {a, b, c};
std::map <aaa, int> container;
container[0]; //compilation error
この場合、コンテナーが空で、segfault が発生することはわかっていますが、それは問題ではありません。Enum は算術型なので、なぜ問題があるのでしょうか?
あなたは両方の点で間違っています。:)
はint
暗黙的に に変換できずenum
、明示的なキャストが必要container[0]
であり、マップ内の新しい値を値で初期化するため、segfault は発生しません。
コンテナのキー タイプはaaa
. の型は0
ですint
。int
は暗黙的に に変換できないaaa
ため、コンパイラ エラーが発生します。
コンパイラは、キーのタイプが であることを期待していますaaa
。ですからcontainer[a]
、何をするかではなく、書く必要があります。