Probleme mit Templates (Unresolved Symbol) [gelöst]
-
Hallo miteinander,
aktuell kämpfe ich mit Templates, weil die nicht so wollen wie ich es will!
Hier ein kurzes (gekürztes) Beispiel meines Codes.// Foo.hpp #pragma once template<typename _Ty> class Foo { private: _Ty bar; public: Foo(); ~Foo(); };// Foo.cpp #include "Foo.hpp" template<typename _Ty> Foo<_Ty>::Foo() { /* 42 */ }// main.cpp #include "Foo.hpp" int main() { // ... Foo<int> *f = new Foo<int>; // ... }Beim Versuch das zu Compilieren bekomme ich von Visual Studio folgenden Fehler:
error LNK2001: unresolved external symbol "public: __thiscall Foo<int>::Foo<int>(void)"
Kann es sein, dass ich gerade nicht verstehe wie ich dies auslagern kann in die cpp-Files?
-
Christian Ivicevic schrieb:
Kann es sein, dass ich gerade nicht verstehe wie ich dies auslagern kann in die cpp-Files?
Mit Templates gar nicht - da muß der Compiler die Definition kennen, wenn er eine konkrete Instanziierung erzeugen will.
Dazu findest du hier im Board genug Threads, die das genauer erklären.
-
Ich habe es schon. Ich sollte vielleicht demnächst zuerst in die FAQ schauen -.-"
Hab einfach alles aus dem cpp File ins Header ans Ende gepackt.