#include #include using namespace std ; template class Base { public: T baseDataMember ; Base( T baseDataMemberP ) { baseDataMember = baseDataMemberP ; } void func() { // (1) std::cout << "baseDataMember: " << baseDataMember << endl ; } }; template class Derived: public Base { public: Derived( T param1 ) : Base( param1 ) { } void method1() { // (2) Base::func() ; } }; template <> class Derived: public Base { public: Derived( int param1 ) : Base( param1 ) { } void method1() { // (2) Base::func() ; } }; int main(){ std::cout << '\n'; Derived derived("Testing") ; //derived.baseDataMember = "Testing" ; derived.method1() ; std::cout << '\n'; }