Ich habe versucht, Stacks als Vorlage darzustellen, ich benutzte eine Struktur und alles ist gut, aber jedes Mal, wenn ich eine Template-Funktion schreiben wollte, musste ich die gleiche Template-Anweisung schreiben, die nicht korrekt zu sein schien -Obwohl ArbeiterWie verwende ich eine einzelne Template-Anweisung für mehr als eine Funktion oder Struktur?
So wie kann ich ein Template-Anweisung für alle Funktionen schreiben ?, hier ist mein Code:
template <typename T> struct Stack { T Value; Stack* next; }; template <typename T> void Push(T Value,Stack* &Top) { Stack * Cell = new Stack(); Cell->Value = Value; Cell->next = Top; Top = Cell; }; template <typename T> bool IsEmpty(Stack * Top) { return (Top==0); } template <typename T> void Pop(T &Value,Stack* &Top) { if (IsEmpty(Top)) cout * Temp = Top; Value = Top->Value; Top = Top->next; delete Temp; } } template <typename T> void GetTop(T &Value, Stack* &Top) { if (IsEmpty(Top)) cout Value; } template <typename T> void EmptyStack(Stack * &Top) { Stack * Temp; while (!(IsEmpty(Top))) { Temp = Top; Top = Top->next; delete Temp; } }
Hoffnung, was ich meine klar ist jetzt, sorry für die leichte Frage :(
danke im voraus
Hmm ... Sie scheinen ein grundlegendes Missverständnis über Vorlagen und Objekte zu haben. Sie schreiben hier Code in einem sehr C-ischen Stil - anstatt Memberfunktionen zu erstellen, erstellen Sie freie Funktionen, die einen Zeiger auf eine Instanz nehmen. Außerdem sollte dies nicht einmal kompiliert werden, da Sie 'Stack *' nicht ohne den Template-Parameter deklarieren können. –
Ich verstehe Vorlagen und OOP auch gut, aber ich habe meine Gründe in meinen Kommentaren auf die Antwort unten erklärt, und ich habe diesen Code in einem vollständig funktionierenden Programm verwendet, mit einer Konsolenanwendung –