C++ 如何从泛型类声明一个对象

时间:2022-10-29 12:48:07
我试了好几次不能成功。。。。我要声明一个Test类,一个存Class 类型,一个是整数型
如何从泛型类
template <class A, int B>class Test { //Test 类中一个是A类型,一个是整数型
private: 
A first;
int second;
    
public:
Test();
Test (A,int);
}
}
Cpp 文件:
template <class T,int i> Test<T,i>::Test() {}
template <class A,int i>Test<A,i>::Test(T a, int b):first(a) {second=b;}
//以上文件均可以通过编译,问题在main函数中

在main 函数中,我这样尝试
Test<int, int >  T1; //!!!!通不过
Test<int, 4> T2; //!!!!通不过
Test<int, int> T3 (3,4); //!!!!通不过
到底应该怎样声明出来一个对象呢 ????求大神指导

5 个解决方案

#1


你的三个尝试都没给Test提供class A的实际类型。int不是一种类。

#2


模板只能全部放头文件他cpp才能正常用

#3


template <class A, int B>class Test { //Test 类中一个是A类型,一个是整数型
private:  
A first;
int second;
    
public:
Test(){}
Test (A obj):first(obj),second(B){cout<<"second"<<second<<endl;}
}; 


int main(){
    Test<int,4> obj(10);
    
    system("pause");
    return 0;
}

#4


请将泛型的声明和定义都放在头文件 现在很少编译器支持分离

#5


template <class A, int B>class Test { //Test 类中一个是A类型,一个是整数型
private:  
A first;
int second;
    
public:
Test(){}
Test (A obj):first(obj),second(B){cout<<"second"<<second<<endl;}
}; 


int main(){
    Test<int,4> obj(10);
    
    system("pause");
    return 0;
}

#1


你的三个尝试都没给Test提供class A的实际类型。int不是一种类。

#2


模板只能全部放头文件他cpp才能正常用

#3


template <class A, int B>class Test { //Test 类中一个是A类型,一个是整数型
private:  
A first;
int second;
    
public:
Test(){}
Test (A obj):first(obj),second(B){cout<<"second"<<second<<endl;}
}; 


int main(){
    Test<int,4> obj(10);
    
    system("pause");
    return 0;
}

#4


请将泛型的声明和定义都放在头文件 现在很少编译器支持分离

#5


template <class A, int B>class Test { //Test 类中一个是A类型,一个是整数型
private:  
A first;
int second;
    
public:
Test(){}
Test (A obj):first(obj),second(B){cout<<"second"<<second<<endl;}
}; 


int main(){
    Test<int,4> obj(10);
    
    system("pause");
    return 0;
}