我有一个有几个构造函数的类。根据通过argv传递给main()的参数,我想在不同的构造函数之间切换。下面的简化例子在“obj”改为class并且我使用例如obj1-> int和obj2-> double。但是,我必须更改以下代码才能使用枚举运行?构造函数模板
#include<iostream>
using namespace std;
enum obj{obj1,obj2};
template <obj T>
class A
{
public:
A(T);
private:
T t_;
};
template<obj T>
A<T>::A(T)
{}
template<>
A<obj1>::A(obj1 t):t_(t) {cout<<"case 1"<< endl;}
template<>
A<obj2>::A(obj2 t):t_(t) {cout<<"case 2"<< endl;}
int main()
{
obj test=obj1;
A<obj> a(test);
return 1;
}
谢谢你的帮忙!
编辑:很明显,代码是错误的类型/值,但哪种机制可以类似于这样的构造函数的切换?
这没有任何意义。 'obj1'和'obj2'是enum * values *,但是您试图将它们用作* types *。 –
' template'表示您需要提供**枚举值**。 'A '不会被编译,因为它不是一个值,它是一个类型。 –