已改,看注释
#include
using namespace std;
class A
{
public:
A(int a1)
{a=a1;}
int a;
};
class B:virtual public A
{
public:
B(int a1,int b1):A(a1)
{b=b1;}
int b;
};
class D:virtual public B
{
public:
D(int a1,int b1,int d1):B(a1,b1) ,A(a1) //这里也要把A类的构造函数写上
{d=d1; }//编译时指向这错,为什么?
int d;
};
void main()
{
D dd(1,2,3);
cout<
你是虚继承,那么他是不会调用基类构造函数的,顺便说一点,虚继承,几乎不用,一般情况构造函数最好不要弄成虚的,你虚继承的话,积累构造函数也是虚的了!这样生成对象时就不会调用基类构造函数了!
构造函数不匹配!
去看看虚基类。