2012-12-12 9 views
46

eine Template-Klasse wie folgt aus Gegeben:Wie wird eine C++ Template-Klasse weitergeleitet?

template<typename Type, typename IDType=typename Type::IDType> 
class Mappings 
{ 
public: 
    ... 
    Type valueFor(const IDType& id) { // return value } 
    ... 
}; 

Wie kann jemand nach vorne erklärt diese Klasse in einer Header-Datei?

+12

Ich weiß nicht, warum das geschlossen wurde - die verknüpfte Frage ist ähnlich, aber anders. Dieser behandelt Vorwärts-Deklarationstemplates im 'std'-Namespace. Diese Frage ist allgemeiner und hat eine andere höchstbewertete Antwort. Ich habe gewählt, um wieder zu öffnen. –

Antwort

65

Dies ist, wie Sie es tun würde:

template<typename Type, typename IDType=typename Type::IDType> 
class Mappings; 

template<typename Type, typename IDType> 
class Mappings 
{ 
public: 
    ... 
    Type valueFor(const IDType& id) { // return value } 
    ... 
}; 

Beachten Sie, dass die Standardeinstellung in der Vorwärts Erklärung und nicht in der eigentlichen Definition.

6

Sie können Standardargumente für eine Vorlage nur für die erste Deklaration der Vorlage deklarieren. Wenn Sie zulassen möchten, dass Benutzer eine Klassenvorlage weiterleiten, sollten Sie einen Weiterleitungsheader bereitstellen. Wenn Sie die Klassenvorlage einer anderen Person mit Standardwerten weiterleiten möchten, haben Sie kein Glück!

Verwandte Themen