テンプレートコンストラクタで特殊化を行うにはどうすればよいですか?テンプレートコンストラクタをテンプレート化する方法は?
template<typename T>
class Stack {
private:
int nelem;
int size;
vector<T> stack;
public:
~Stack();
Stack<T>(int t);
void push(T data);
T pop();
T top();
int getPosTop(){return (nelem--);};
void cleanStack(){nelem = 0;};
bool StackEmpty(){ return (nelem == 0);};
bool StackFull(){ return (nelem == size);};
};
template <typename T> // constructor definition here
Stack<T>::Stack<T>(int t){
size = t;
nelem = 0;
};
int main(){
return 0;
}
それはエラーがたくさん来た: より良い理解のために、私はコードの例をもたらすでしょう。 はその後、私は十分ではなかった
template <typename T> template <typename T> Stack<T>::Stack<T> (int t){
に
template <typename T>
Stack<T>::Stack<T>(int t){
を交換した別のポスト、いくつかの提案を、お読みください。
私には何が欠けていますか?そして、その背後にある考え方は何ですか?
コンストラクタはテンプレートではありませんので、あなたは、コンストラクタを専門とすることはできません。それは、クラステンプレートの非テンプレートメソッドです。 –