Gast
2009-12-09, 11:12:27
Hi,
ich habe mir ne Template-Funktion geschrieben und Deklaration und Definition in Header und CPP aufgeteilt. Leider findet er nun die Funktion beim Linken nicht.
Hier mal ein Minimalbeispiel:
Helpers.h
#ifndef HELPERS_H_
#define HELPERS_H_
#include <string>
namespace Helpers
{
template<typename T> std::string ValueToString(T value);
};
#endinf
Helpers.cpp
#include "helpers.h"
template<typename T> std::string Helpers::ValueToString(T value)
{
std::stringstream out;
out << value;
return out.str();
}
main.cpp
#include "helpers.h"
int main()
{
std::string test = Helpers::ValueToString<int>(5);
}
Fall jemand noch die Fehlermeldung von VS 2008 haben will:
error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Helpers::ValueToString<int>(int)" (??$ValueToString@H@Helpers@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$alloc ator@D@2@@std@@H@Z) referenced in function _main main.obj
ich habe mir ne Template-Funktion geschrieben und Deklaration und Definition in Header und CPP aufgeteilt. Leider findet er nun die Funktion beim Linken nicht.
Hier mal ein Minimalbeispiel:
Helpers.h
#ifndef HELPERS_H_
#define HELPERS_H_
#include <string>
namespace Helpers
{
template<typename T> std::string ValueToString(T value);
};
#endinf
Helpers.cpp
#include "helpers.h"
template<typename T> std::string Helpers::ValueToString(T value)
{
std::stringstream out;
out << value;
return out.str();
}
main.cpp
#include "helpers.h"
int main()
{
std::string test = Helpers::ValueToString<int>(5);
}
Fall jemand noch die Fehlermeldung von VS 2008 haben will:
error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Helpers::ValueToString<int>(int)" (??$ValueToString@H@Helpers@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$alloc ator@D@2@@std@@H@Z) referenced in function _main main.obj