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; base = new T[rows]; } ~Adios() { delete[] hptr; } }; int main(int argc, char *argv[]) { Adios<double> a(5); return 0; }