错误C2512:没有适当的默认构造函数可用

时间:2015-12-22 08:55:47

标签: c++ inheritance virtual-inheritance

我有类似下面代码的情况,但我收到错误C2512:没有合适的默认构造函数可用错误

class A
{
};

class AProxy :public A
{
    A* ptr;
public:
    AProxy(A* var):ptr(var){}
};

class B : public A
{
};

class BProxy : public virtual B, public virtual AProxy
{
    B* ptr;
public :
    BProxy(B* var):AProxy(var),ptr(var){}
};

class C : public B
{
};

class CProxy  : public virtual BProxy, public virtual C
{
    C* ptr;
public :
    CProxy(C* var):BProxy(var),ptr(var){}
};

我不知道为什么会出现这样的错误。 请帮帮我

1 个答案:

答案 0 :(得分:1)

请检查此问题Link

您的问题在于virtual继承。您需要在AProxy构造函数的初始化列表中调用CProxy构造函数:

public :
CProxy(C* var):BProxy(var), AProxy(var),ptr(var){}