Поскольку вы говорите о C ++ 0x, просто используйте новый синтаксис enum class
:
enum class VertexType {
Vector1 = 1,
Vector2 = 2,
Vector4 = 3
};
Значения перечислителя будут доступны только через тип VertexType
, как в VertexType::Vector1
.
Некоторые цитаты из стандарта:
§7.2 / 2 [...] enum-класс enum-keys и enum-структура семантически эквивалентны; тип перечисления, объявленный с одним из них, является перечислением области, и его перечислители являются перечислителями области. [...]
§7.2 / 10 [...] Каждый перечислитель с областью действия объявляется в области перечисления. [...]
// example in §7.2/10
enum class altitude { high=’h’, low=’l’ };
void h() {
altitude a; // OK
a = high; // error: high not in scope
a = altitude::low; // OK
}