У меня есть класс с несколькими конструкторами.В соответствии с параметром, который передается через argv в main (), я хотел бы переключаться между различными конструкторами.Следующий упрощенный пример прекрасно работает в случае, когда «obj» заменен на класс, и я использую, например, obj1-> int и obj2-> double.Но что мне нужно изменить, чтобы следующий код выполнялся с использованием enum?
#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;
}
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ: Ясно, что код неправильный в отношении типа / значения, но какой механизм может напоминать такое переключение конструкторов?