Ich stecke beim Definieren einer Spezialisierung für eine Mitgliedsfunktion innerhalb einer Klassenvorlage fest. Wenn ich die vollständig spezialisierte Mitgliedsfunktion außerhalb der Klasse definiere und sie dann in meiner Hauptklasse verwende, beschwert sich der Linker über mehrere Definitionen:
in template.hpp:
Code: Select all
template
class MyClassTemplate
{
public:
MyClassTemplate(const T &t) : member(t)
{
}
const T GetMember() const
{
return member;
}
private:
T member;
};
in templates.cpp:
Code: Select all
template
const double MyClassTemplate::GetMember() const
{
return member * 2.0;
}
in main.cpp:
Code: Select all
MyClassTemplate mctd(10.9);
mctd.GetMember();
Der Fehler besagt, dass der Linker zwei Definitionen derselben Funktion gefunden hat, aber ich definiere die Funktion nicht, ich verwende sie!