From: Istvan V. <ist...@et...> - 2000-11-15 14:08:42
|
Hi, I have the following problem compiling C++ code containing template classes with static functions having local static variables: template <typename T> class Singleton { private: Singleton() {} public: static const Singleton<T>& getInstance(); } template <typename T> const Singleton<T>& Singleton<T>::getInstance() { static const Singleton<T> obj; return obj; } Now, if I use, say Singleton<int>::getInstance() in a function in a DLL, and in my program linking to that DLL, different object references are returned. Having investigated the problem, I realized that getInstance is generated in both the DLL and the program, and each uses its own. Is it possible to solve it (e.g. by using weak symbols, though AFAIK it is not possible with COFF objects)? If so, dou you plan to solve it? I guess, it could be solved with -fexternal-templates or -fno-implicit-templates, but I would like to avoid them, if possible. Thanks, Istvan PS.: I use Mumit Khan's gcc-2.95.2-1 snapshot with binutils-19990818-1. -- Váradi István Tel: +36-1-437-7236 István Váradi szoftverfejlesztõ Software Designer Ericsson Magyarország Kft. Ericsson Hungary Ltd. |