テンプレート クラスがインラインで定義されている場合、次のコードは正常に機能します。
main
{
unsigned int A=0; //local variable in 'main'.
Test<int> TestObjekt; //Object.
//do something
cout<<TestObjekt.calculate_a(A);
};
クラスは 4 つのテスト理由で作成され、指定されたデータ 'a' に '2' が追加され、メインのローカル変数 'A' に結果が返されます。
template <typename T> class Test //dichiarazione classe
{
private:
T a; //private variable of changeable type T.
public:
Test(T InitA) //constructor
{
a=InitA;
}
T calculate_a(T a) //method
{
a+=2;
return a;
}
};
この方法では、すべてが正常に機能しますが、クラスのアウトライン定義を作成すると、コンパイラはそれを受け入れなくなります。宣言は次のとおりです。
template <typename T> class Test //class declaration
{
private:
T a; //private variable
public:
Test(T InitA); //constructor
T calculate_a(T); //method
};
今私の定義:
template <typename T> Test<T>::Test(T InitA)
{
a=InitA;
}
template <typename T> T Test<T>::calculate_a(T) //metodo della classe Test
{
a+=2;
return a;
}
エラーメッセージは次のとおりです。
1.error C2512: 'Test<T>': non è disponibile alcun costruttore predefinito...
means: there is no appropriate, predefined constructor available
1> with
1> [
1> T=int
1> ]
Visual C++ 2008 Express バージョン コンパイラを使用しています。私は C++ の初心者であり、プログラムを実行するためにすでに長い間戦っているため、ほとんど神経衰弱に陥っています。
誰かが私を助けてくれることを願っています
感謝と敬意
ウーヴェ