template <class T> class Hola { protected: T *base; public: Hola() : base(0) {} }; template <class T> class Adios : public Hola<T> { Hola<T> *hptr; int rows; public: Adios(int n) { rows = n; hptr = new Hola<T>[rows]; } ~Adios() { delete[] hptr; } }; int main(int argc, char *argv[]) { Adios<double> a(5); return 0; }