Funktionen und Namespace
-
Ich habe leider schon wieder eine Frage. Diesmal bekomme ich eine Fehlermeldung beim linken.
Erstmal ein bischen Code:
function.h
#include<vector> namespace test{ template<typename T> void foo(std::vector<T> &v); template<typename T> void bar(std::vector<T> &v); }
function.cpp
#include"function.h" #include<vector> template<typename T> void test:: void foo(std::vector<T> &v){} template<typename T> void test:: void bar(std::vector<T> &v){} }
foobar.cpp
#include<vector> #include"function.h" int main(){ std::vector<int> v; test::foo(v); return 0; }
Kompiliert ohne Probleme. Erstelle ich in function.cpp eine main Methode funkioniert auch das linken Fehlerfrei.
Nun meldet der Linker mir:
undefined reference to `void test::foo<int>(std::vector<int, std::allocator<int> >&)'Das verstehe ich leider nicht, da ich keine weiteren Libs linken muss.
Zweite Frage: Ist dieser Code in Form von Funktionstemplates so ok?
Vielen Dank im voraus!
-
template funktionen müssen direkt im header definiert werden.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html
-
Danke!