我真的不知道如何制定我的问题,但这里是我试图解决这一难题:从不同类型的模板类创建对象
if (config.a)
myObject = new Object<DummyInterface>();
else
myObject = new Object<RealInterface>();
所以任务是创建一个一个对象如果在config中指定了虚拟接口,则使用真实接口类。 那么我该如何声明myObject? 有几个选项,我可以有对象类从抽象类派生无模板:即:
class Base
{
...
}
template <class T>
class Object : public Base
{
...
}
然后,我可以宣布myObject的是:
Base* myObject;
但现在的问题是:如果我的对象类声明非虚方法:
template <class T>
class Object : public Base
{
public:
T getInterface() { return myInterface;}
private:
T myInterface;
}
我不能把它像这样:
myObject->getInterface()
,我不能做动态转换,因为我不知道是什么类型,直到运行时...
任何建议如何解决呢?也许有另一种解决方案?
如果您需要将接口投射到实施中,则出现问题。尝试审查你的课程设计。 –