Page 1 of 1

Klassenvorlagen-Member-Spezialisierung, mehrere Definitionen

Posted: 19 Jan 2025, 17:01
by Guest
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!