在抽象基类C ++中创建子类的实例

时间:2014-11-28 10:55:44

标签: c++ inheritance abstract

我想知道是否可以像上面C ++中的代码那样做。 我们的想法是在基类中返回子对象的实例。

public class A
{
    private B b;

    public A()
    {
        b = B.GetDefaultB();
    }

    public A(B _b)
    {
        b = _b;
    }
}

public abstract class B
{
    public static B GetDefaultB()
    {
        return new C();
    }
}

public class C : B
{
    public C()
    {

    }
}

我试着做点什么

class A
{
public:
    A();
    ~A();
};

A::A(){}
A::~A(){}

class B
{
public:
    B();
    static B* GetDefaultB();
    virtual ~B() = 0;
};

B::B(){}
B* B::GetDefaultB()
{
    return new C();
}
B::~B(){}

class C : public B
{
public:
    C();
    ~C();
};

C::C(){}
C::~C(){}

但我认为包含中有一个循环。 我该怎么办?

提前致谢!

1 个答案:

答案 0 :(得分:0)

只需重新排序您的类声明和方法定义:

class A
{
public:
    A();
    ~A();
};

class B
{
public:
    B();
    static B* GetDefaultB();
    virtual ~B() = 0;
};

class C : public B
{
public:
    C();
    ~C();
};

A::A(){}
A::~A(){}

B::B(){}
B* B::GetDefaultB()
{
    return new C();
}

C::C(){}
C::~C(){}