私はスタックのテンプレートクラスを実装しようとしています。しかし、私はメインの前にそれを宣言したい。それをしてもいいですか?テンプレートの後にメインを置くとコンパイルされますが、メインのテンプレートを最初に置くことは可能ですか?与えられたメインの後に配置されるクラステンプレートを宣言するにはどうすればよいですか?
#include <iostream>
//start declaration of template
template <class T>
class stack<T>;
//end declaration of template
int main() {
stack<char> s(5);
s.push('a');
s.push('b');
cout <<s.pop()<<endl;
stack<double> s1(10);
s1.push(3.2);
s1.push(0.5);
cout << s1.pop()<<endl;
return 0;
}
template <class T>
class stack {
T *s;
int size; //How many elements I can stole.
int top; //Where the index is available.
public:
stack(int sz) {
size = sz;
s = new T[sz];
top=-1;
}
void push(T e);
T pop() {
return s[top--];
}
};
template <class T>
void stack<T>::push(T e) {
s[++top] = e;
}
エラー:これをやってレコードの
1>.\classTemplPers.cpp(6) : error C2143: syntax error : missing ';' before '<'
1>.\classTemplPers.cpp(6) : error C2059: syntax error : '<'
、:
template <class T>
class stack;
はどちらか動作しません。このようなエラーが表示されます:
1>.\classTemplPers.cpp(10) : error C2079: 's' uses undefined class 'stack<T>'
なぜあなたはそれをしたいですか? –
私は先生からそれをやることを任されました。 –
@PatrykWertkaこれは完全に有効なことです。それはなぜでしょうか? – Quentin