'A::A' :no appropriate default constructor available#includeclass A{protected:int a;public:A(int x){a=x;cout

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/04 19:08:08
'A::A' :no appropriate default constructor available#includeclass A{protected:int a;public:A(int x){a=x;cout
xR_kP*=bREbIX_jt:Y7RXHԦ~عu{\.s97mfDA8A784YT%KJA*k'z*e(rҩjRNS^I'Vf)U8,4U +UMH6V:WL`ܫFN::W(ęNt{Ŝb̤CWx-\ ^Cc2jlkchӌtCgN+'&*0C `eG';Qece.4麁WC`t;s';ioGކGLd}Ild~~NH|z.Vdx`a0gqne]QC0#`[pdPX.=f{=*H=U89D>E-.nʦmQWdth>XYqS%S3KA

'A::A' :no appropriate default constructor available#includeclass A{protected:int a;public:A(int x){a=x;cout
'A::A' :no appropriate default constructor available
#include
class A
{
protected:
int a;
public:
A(int x)
{
a=x;
cout

'A::A' :no appropriate default constructor available#includeclass A{protected:int a;public:A(int x){a=x;cout
这个要改对的话只要在D的构造函数显式调用A的构造函数A(x)就可以了
D(int x):A(x),B(x),C(x)
这是一个典型的菱形继承结构
直接写
D(int x):B(x),C(x)
是有问题的,属于行为未定义,因为先调用B(x)还是C(x)在C++的标准中是没有定义的.虽然在很多编译环境中都是先B后C,但这并不可靠
effective c++中对这一结构进行了详细的剖析,感兴趣的话可以去好好看看