2017-12-01 2 views
0

Ich bin sehr neu auf C++ Vorlagencode. Könnten Sie mir bitte die folgenden Fragen erläutern: Wenn ich eine Funktionsvorlage (die nur Nicht-Typ-Parameter hat) verwenden möchte, um die Elementfunktion für eine Klasse zu definieren, muss ich auch eine Vorlage für diese Klasse definieren. Oder anders ausgedrückt, erlaubt C++ dem Benutzer, die Memberfunktionsvorlage (die nur Nicht-Typparameter hat) in der untemplated-Klasse zu definieren. zum beispiel:Funktionsvorlage mit Nicht-Typ-Parameter

class foo{ 

template <int vecsize> 
void bar(std::array<int, vecsize> vec); 
}; 

danke.

+3

Es ist völlig in Ordnung, eine Vorlage Element in einer Nicht-Template-Klasse zu haben. Die Art der Template-Parameter spielt keine Rolle. Allerdings hat std :: vector keinen Größenparameter. –

+0

Meinst du vielleicht 'std :: array '? – Caleth

+0

danke Jungs für die Beantwortung meiner Frage. Ich habe meinen Beitrag aktualisiert, damit es Sinn ergibt. – bin

Antwort

0

Ja, Elementfunktionsvorlagen erfordern nicht, dass die Elternstruktur templatisiert wird (aber es könnte natürlich eine Vorlage sein).

Es scheint, dass Sie eine anstelle von std::vector wollen (wie n.m. erwähnt, gibt es keinen Größenparameter für std :: vector).

Und du bist ein Semikolon am Ende der Klassendefinition fehlt

+0

Entschuldigung wegen der Syntax. Ja, du hast Recht, ich sollte verwenden; & std :: array. – bin

Verwandte Themen