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

error C2512: no appropriate default constructor available

本文关键字:默认 构造函数 C2512 错误      更新时间:2023-10-16

我遇到了类似以下代码的情况,但我得到了错误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){}
};

我不明白为什么会出现这样的错误。请帮我解决

请检查此问题链接。

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

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