C++ время выполнения решения для типа шаблона

 template<typename T>
 class A
 { std::vector<T> v;
   .... //other variables
   void op1();
   void op2();
   ... //other operations
 };

 int main()
 {
   string type;
   cout<<"which type do you need?"
   cin>>type;
   if(type=="int")
      A<int> ai;
   else  A<float> af;

   return 0;
 }

В обоих блоках я должен выполнить один и тот же поток инструкций. например:

 ai.op1();
 ai.op2();
 ...

Если их всего два, я могу написать это два раза, но это ужасное решение с множеством условий. Есть ли способ сделать это один раз для выбранного типа после "если-еще"? Я не могу сказать, какой тип будет выбран? Как я должен сделать?

1 ответ

Решение

Вы можете использовать шаблон функции:

template <typename T>
void do_stuff()
{
  A<T> ai;
  ai.op1();
  ai.op2(); 
}

затем

int main()
{
   std::string type;
   std::cout << "which type do you need?"
   std::cin >> type;

   type == "int" ? do_stuff<int>() : do_stuff<float>();
}
Другие вопросы по тегам