带有模板类的c ++中的多态性

时间:2016-09-26 07:32:59

标签: c++ templates polymorphism

我想在c ++中使用模板化类,其中一个模板参数由运行时用户输入确定。我很确定有一种简单而好的方法可以做到这一点,但我对c ++很陌生,我仍然在努力研究多态和模板类...

以下是我想做的事情:

if (argument==0)
      typedef Class1 ActualClassUsed;
if (argument==1)
      typedef Class2 ActualClassUsed;

MyTemplatedClass<ActualClassUsed> * object= MyTemplatedClass<ActualClassUsed>::New();

显然在上面的例子中,在正确的范围内没有定义ActualClassUsed ...任何简单的方法来纠正这个?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

模板实际上是使用相应的数据(仅需要的数据类型,而不是所有)类型复制相同的代码。这实际上是在编译时发生的。

当不同的数据类型(用户定义或内置数据类型)以相同的方式处理时,模板很有用

目前无法在运行时实例化模板。

答案 1 :(得分:0)

  

我想在c ++中使用模板化类,其中一个模板参数由运行时用户输入确定。我很确定有一种简单而好的方法可以做到这一点

没有。 实际上,根本不可能通过设计。

模板是一个开发人员工具,可以在您编译程序时生成代码,希望在任何用户运行 之前发生 ,时间旅行除此之外很难在有人给你之前使用信息。

根据未来司机将使用它的日期,您无法确定您在工厂中建造的汽车的固定颜色。如果你想要这样的东西,它必须是一个动态变色龙,如颜色,它会根据当天的变化而变化。

相关问题