Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
enum aaa {a, b, c}; std::map <aaa, int> container; container[0]; //compilation error
我知道在这种情况下容器是空的,我会得到段错误,但这不是问题。枚举是算术类型,为什么会出现问题?
你在这两个方面都错了。:)
Anint不能隐式转换为 an enum,需要显式转换,并且您不会得到段错误,因为container[0]会在映射中对新值进行值初始化。
int
enum
container[0]
容器的键类型是aaa. 的类型0是int。int不能隐式转换为aaa,因此会出现编译器错误。
aaa
0
编译器期望密钥类型为aaa。所以你需要写container[a]而不是你做什么。
container[a]