Ich versuche, den Konstruktor zu machen Standardwerte für die Template-Typen zu setzen, wie folgend:Vorlage Klasse Konstruktor Standardargumente
Mit dieser Struktur Vorlage
template<class Type1, class Type2>
struct Pair
Das ist mein Konstruktor:
Pair(const Type1& t1 = Type1(), const Type2& t2 = Type2()) :
first(t1), second(t2)
{}
Ich verwende Aufrufe an den Standardkonstruktor jedes Typs. Alles geht mit, wenn ich den Konstruktor mit params nennen:
Pair<float, double> pair_fd(1, 1);
Aber als ich den Anruf zu tätigen, ohne params das Programm Linkerfehler gibt.
Ist es möglich zu erreichen, was ich versuche? Wenn ja, was verstehe ich falsch?
Danke euch allen.
_ "Ist möglich zu erreichen, was ich versuche?" Zu schaffen _ Ja. _ "Wenn ja, was missverstehe ich?" _ Es gibt viele Möglichkeiten, wie das scheitern kann, zeige bitte [MCVE]. –
[Kann nicht reproduziert werden] (http://coliru.stacked-crooked.com/a/936667f11b5b06a0). Mein Link ist ein Beispiel für einen MCVE. – chris
Warum nicht einfach einen Standardkonstruktor für 'Paar' erstellen und' std :: enable_if_t :: value> '(ähnlich wie' Type2') verwenden? Oder verwenden Sie einfach 'std :: pair', anstatt einen benutzerdefinierten Paartyp zu erstellen. –
ArchbishopOfBanterbury