C++中如何决定父类静态方法通过哪个子类调用

问题描述 投票:0回答:0

我正在尝试通过调用基类静态方法(这类似于单例实例化)来创建从基类继承的类的实例,这样我就不需要为所有的类编写“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 模式,但是由于子构造函数必须是私有的,所以父级不能调用子构造函数。 (我目前正在使用朋友,但朋友不是首选)。

c++ inheritance static
© www.soinside.com 2019 - 2024. All rights reserved.