当我的模板类被内联定义时,以下代码可以正常工作:
main
{
unsigned int A=0; //local variable in 'main'.
Test<int> TestObjekt; //Object.
//do something
cout<<TestObjekt.calculate_a(A);
};
该类刚刚创建了 4 个测试原因,它在给定数据“a”中添加了一个“2”,并将结果返回 main 的局部变量“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++ 初学者,我几乎精神崩溃了,因为我已经为使程序运行而奋斗了很长时间。
希望有人可以帮助我
谢谢并恭祝安康
乌韦