首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板类型的C++运行时决策

模板类型的C++运行时决策
EN

Stack Overflow用户
提问于 2014-06-02 18:54:59
回答 1查看 1.1K关注 0票数 1
代码语言:javascript
复制
 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;
 }

在这两个块中,我必须执行相同的指令流。例如:

代码语言:javascript
复制
 ai.op1();
 ai.op2();
 ...

如果他们只有两个,我可以写两遍,但这是一个可怕的解决方案,有很多条件。有没有办法在“if-否则”之后对所选的类型执行一次此操作?我说不出会选哪种类型?我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 18:56:46

您可以使用函数模板:

代码语言:javascript
复制
template <typename T>
void do_stuff()
{
  A<T> ai;
  ai.op1();
  ai.op2(); 
}

然后

代码语言:javascript
复制
int main()
{
   std::string type;
   std::cout << "which type do you need?"
   std::cin >> type;

   type == "int" ? do_stuff<int>() : do_stuff<float>();
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24001349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档