typedef для enum
От: Аноним  
Дата: 19.08.09 10:51
Оценка:
Хочется вытащить 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, желательно без нестандартных расширений языка?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.