Туплю...
template <class T> class A {
protected:
T* p;
};
template <class T> class B : public A<T> {
public:
T& operator [] ( int i ) { return p[i]; }
};
$ g++ test.cpp
test.cpp: In member function ‘T& B<T>::operator[](int)’:
test.cpp:11: error: ‘p’ was not declared in this scope
Лечится
T& operator [] ( int i ) { return A<T>::p[i]; }
Для не-шаблонов все работает и так ес-но. Это вообще как понимать и как от этого избавится? Мне б категорически НЕ хотелось везде прописывать базовый_класс::...