Klassenvorlagen-Member-Spezialisierung, mehrere Definitionen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Klassenvorlagen-Member-Spezialisierung, mehrere Definitionen

by Guest » 19 Jan 2025, 17:01

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!

Top