Hi All, I am using C++ templates, and facing some strange linking issues with GCC 3.4.6. Here it goes, I have a singalton class template, say A.h . //A.h -- sample code. template<typename T> class A { public: static A * getInstance () { if (!_instance) _instance = new A (); return _instance; } T * getApp () const { return _pApp; } private: T * _pApp; static A * _instance; }; Another class B, as B.h, //B.h class B : public C { public: //Some var and funcs are defined. }; Now I am trying to use it in a .cpp file as, //x.cpp #include "A.h" #include "B.h" -------------------- -------------------- B * app = A<B>::getInstance ()->getApp (); -------------------- -------------------- File x.cpp compiles perfactly, but while linking it throws error saying, x.o(.gnu.linkonce.t._ZN9AI11BE11getInstanceEv+0x9): In function `A<B>::getInstance()': A.h:: undefined reference to `A<B>::_instance' collect2: ld returned 1 exit status Any clue ? Thanks, Rajat.