我想调用构造函数;
class anAbstractClass
{
public: anAbstractClass(inputdatatype){/*blablabla*/}
};
class aChield : public anAbstactClass
{
/*
...
*/
}
void _engine::initShader(_anAbstractClass** inShader)
{
*inShader = new /*???*/(inputdata for the construcor)
}
aChield* theChield;
_engine* myEngine = new _engine();
myEngine->initShader(&theChield);
那么,如何在/ ??? /中调用构造函数? 提前回答!
答案 0 :(得分:2)
你做不到。 initShader
如何知道哪个子构造函数是基类?
我认为你想要的是一个模板化的功能:
template <typename T>
void _engine::initShader(T ** inShader)
{
*inShader = new T(inputdata for the construcor)
}
答案 1 :(得分:1)
好主意,但是没有支持在运行时获取指针的确切类型。
在initShader
方法中,inShader
的类型为anAbstractClass**
,并且在方法调用之前无法获取指向派生类指针的信息。
所以你需要更改你的代码,也许你可以使用一些工厂或类似的东西。