私はテンプレートとしてStacksを表現しようとしていましたが、構造体を使用していましたが、すべてがうまくいきましたが、テンプレート関数を記述するたびに、同じテンプレート文を書く必要がありました-although working-複数の関数または構造体に対して1つのTemplate文を使用するにはどうすればよいですか?
それでは、どのように私はここに?、すべての機能のための1つのテンプレート文を書くことができます私のコードは次のとおりです。
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; } }
私が何を意味するか希望は、今わずかな質問:(
を気の毒に明確ですありがとうございます。
ええと...あなたはテンプレートとオブジェクトについて根本的な誤解があるようです。ここでは非常にC-ishスタイルのコードを記述しています。メンバ関数を作成するのではなく、インスタンスへのポインタを取る自由な関数を作成しています。また、テンプレートパラメータなしで 'Stack * 'を宣言することができないので、これをコンパイルするべきではありません。 –
私はテンプレートとOOPもはっきりと理解していますが、私の理由は以下の答えに私のコメントで宣言しています。私はコンソールアプリケーションを使って完全に動作するプログラムでこのコードを使用しました –