Хочется вытащить enum из недр:
namespace X {
namespace Y {
class Z {
public:
enum MyEnum { a, b, c};
};
}
}
в "рабочий класс"
class MyClass
{
typedef X::Y::Z::MyEnum MyEnum;
};
Однако при этом возникают проблемы с его использованием. В принципе моя 2005 студия понимает явное специфицирование enum:
class MyClass
{
public:
typedef X::Y::Z::MyEnum MyEnum;
void DoSomething() {
// MyEnum value = a -- так не компилируется
MyEnum value = MyEnum::a; // -- так работает
}
}
Но если пытаться использовать этот enum снаружи компилятор падает в ice:
class AnotherClass
{
void DoAnotherThing() {
MyClass::MyEnum anotherValue = MyClass::MyEnum::a; // <-- тут падает
}
}
Код привожу схематично, не уверен что в нём ошибка воспроизведётся.
Но вопрос в любом случае остаётся открытым — как правильно задать typedef для enum, желательно без нестандартных расширений языка?