1
 enum aaa {a, b, c};

 std::map <aaa, int> container;

 container[0]; //compilation error

我知道在这种情况下容器是空的,我会得到段错误,但这不是问题。枚举是算术类型,为什么会出现问题?

4

3 回答 3

6

你在这两个方面都错了。:)

Anint不能隐式转换为 an enum需要显式转换,并且您不会得到段错误,因为container[0]会在映射中对新值进行值初始化。

于 2013-01-29T13:36:20.430 回答
1

容器的键类型是aaa. 的类型0intint不能隐式转换为aaa,因此会出现编译器错误。

于 2013-01-29T13:35:52.360 回答
1

编译器期望密钥类型为aaa。所以你需要写container[a]而不是你做什么。

于 2013-01-29T13:35:58.847 回答