2016-12-19 3 views
-4

Ich brauche eine Vorlage-Klasse in meiner Hauptfunktion. Dies liegt daran, dass ich eine Template-Klasse innerhalb meiner Hauptfunktion referenziere. Zum Beispiel:Wie Template-Klassen in Hauptfunktion verwenden

LinkedListInterface<T> * linkedList = new LinkedListInterface<T>*; 

Also habe ich versucht, die Template-Deklaration über „int main()“ setzen

template<typename T> 
int main() 

Aber dann bekam ich die Verknüpfung Fehler, weil sie nicht mehr erkannt dies als eine Hauptfunktion. Ich habe ein paar Workarounds ausprobiert, zum Beispiel eine Funktion, die alles gemacht hat, aber dann musste diese Funktion eine Template-Klasse sein, also konnte ich sie immer noch nicht von main aus aufrufen. Etwas Hilfe wäre willkommen. Vielen Dank.

`

Antwort

1

Es ist nicht möglich, die Haupt-Vorlage zu verwenden, aber ich glaube nicht, dass Sie das tun wollen.

Wenn Sie eine Vorlage verwenden, können Sie dies tun:

LinkedListInterface<int> *linkedList = new LinkedListInterface<int>(); 
0

Es gibt viel schlimmeres Problem ist:

Compiler können die Template-Funktion instantiations sowieso nicht unterscheiden, da es nicht sagen kann, der Unterschied zwischen main<int> und main<whatever>, da sie nicht Teil der Signaturfunktionssignatur sind.

Wie von anderen Antworten erwähnt, kann main keine Vorlage sein.

1

main kann keine Funktionsvorlage sein; Es muss eine Funktion sein. Um eine Klassenvorlage innerhalb main zu verwenden, müssen Sie die Vorlage instanziiert, indem sie mit der Objektdeklaration alle erforderlichen Template-Parameter bereitstellt:

LinkedListInterface<int> linkedList; 

Dieser weist den Compiler eine Klasse aus der Klassenvorlage LinkedListInterface, wo die erste Vorlage zu erstellen Parameter ist der Typ int. Es erstellt dann ein Objekt dieses Typs.

Verwandte Themen