Templates: "multiple definition" Linkerfehler
-
Hallo zusammen!
Mache gerade ddie ersten Gehversuche mit Templates und hab gleich die ersten Probleme:
template <typename T> class trait { public: static int type; }; template<> int trait<int>::type = Type_Int; template<> int trait<double>::type = Type_Double;Leider bekomme ich Linkerfehler wegen "multiple definition" und komme nicht weiter. Habe schon Google benutzt aber keinen wirklichen Hinweis auf mein Problem gefunden. "inline" geht nicht da keine Funktionen. Es gibt auch keine extra .cpp Datei, alles im Header deklariert und definiert.
xpjdisplay.o:(.data+0x0): multiple definition of `trait<int>::type' basedisplay.o:(.data+0x0): first defined here xpjdisplay.o:(.data+0x4): multiple definition of `trait<double>::type' basedisplay.o:(.data+0x4): first defined here xpjpanel.o:(.data+0x0): multiple definition of `trait<int>::type' basedisplay.o:(.data+0x0): first defined here xpjpanel.o:(.data+0x4): multiple definition of `trait<double>::type' basedisplay.o:(.data+0x4): first defined hereSystem: Linux
[sven@sunshine ~]$ g++ -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../configure --prefix=/usr --enable-shared --enable-languages=c,c++,fortran,objc,obj-c++ --enable-threads=posix --mandir=/usr/share/man --infodir=/usr/share/info --enable-__cxa_atexit --disable-multilib --libdir=/usr/lib --libexecdir=/usr/lib --enable-clocale=gnu --disable-libstdcxx-pch --with-tune=generic Thread model: posix gcc version 4.4.0 20090526 (prerelease) (GCC)Danke im Voraus für jeglichen Hinweis

-
Die Definition der statischen Variable muss aber trotzdem in eine Source-Datei, die unabhängig vom Header nur einmal gelinkt wird.
