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]、何をするかではなく、書く必要があります。