У меня есть такая структура с открытым членом enum:
namespace A {
struct Events {
enum CUES { CLEAR, DATA, ERROR };
virtual void Event(CUES) = 0;
protected:
~Events() {}
};
}
Когда я пытаюсь получить, скажем, CLEAR
из другого класса, компилятор выдает ошибку, чтобы сказать, что он недоступен.
Вот код и ошибка:
namespace B {
class Base: A::Events{
void Event(Events::CUES){}
protected:
Events::CUES lastCue;
};
class Impl: public Base {
bool test(){
return (lastCue == A::Events::CLEAR);
}
};
}
somefile(19): error C2247: 'A::Events::CLEAR' not accessible because 'B::Base' uses 'private' to inherit from 'A::Events'
somefile(3): note: see declaration of 'A::Events::CLEAR'
Как получить доступ к общедоступному перечислению?
Обновление: gcc
Кажется, скомпилировать это без проблем.