C++ 错误C2512:没有合适的默认构造函数可用
我有一个类似下面代码的情况,但我得到了错误C2512:没有合适的默认构造函数可用错误C++ 错误C2512:没有合适的默认构造函数可用,c++,inheritance,virtual-inheritance,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(
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){}
为什么会这样
CProxy
正在调用BProxy
,它已经在调用AProxy
,因为在使用虚拟继承时,虚拟基构造函数是从大多数派生类调用的。