2016-05-26 22 views
-1

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.

+0

_ "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]. –

+1

[Kann nicht reproduziert werden] (http://coliru.stacked-crooked.com/a/936667f11b5b06a0). Mein Link ist ein Beispiel für einen MCVE. – chris

+0

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

Antwort

0

Gelöst.

Ich habe versucht, die Variable wie

Pair<float, double> pair_fd(); 

Statt

Pair<float, double> pair_fd; 

Dank @ Chris