我正在尝试通过调用基类静态方法(这类似于单例实例化)来创建从基类继承的类的实例,这样我就不需要为所有的类编写“CreateInstance()”静态方法儿童班。例如:
`class Base
{
public:
Base *CreateInstance()
{
return new XXX;
}
}
class D1: public Base
{
private:
D1()
{
......
}
}
class D1: public Base
{
private:
D1()
{
......
}
}
main()
{
D1 *pD1 = D1::CreateInstance();
D2 *pD2 = D2::CreateInstance();
}`
其中“XXX”为子类的名称。在D1::CreateInstance()中,为D1;在D2::CreateInstance()中,XXX为D2。
这可能吗?
我知道 CRTP 模式,但是由于子构造函数必须是私有的,所以父级不能调用子构造函数。 (我目前正在使用朋友,但朋友不是首选)。