У меня проблема со следующим кодом:
class SymmetryTypes
{
public:
enum Type { REAL, COMPLEX, INTEGER, PATTERN, UNINITIALIZED };
void f() { cout << "SymmetryTypes::f() invoked" << endl; };
};
template <class T>
class EnumBase : public T
{
public:
EnumBase() /* : t_(T::UNINITIALIZED) */ { T::f(); }
private:
// T::Type t_;
};
int main(int argc, char* argv[])
{
EnumBase<SymmetryTypes> symmetry;
return 0;
}
Это компилируется, но когда я раскомментирую, это не так. Кажется, что я могу получить доступ к членам функции базового класса T, но не могу получить доступ к члену enum и его значениям (также пробовал typedefs). Ты знаешь почему?