Oppure
#ifndef _A_ #define _A_ template <class C> class A { public: A(const C &data) { this->data=data; } private: C data; } #endif
previous declaration of ‘template<class C> class A’