vc 6.0 为什么不能多继承
#include <iostream>
#include <string>
using namespace std;
class Class
{
public:
Class(string str):str(str),num(0) {cout<<"Class(string "<<str<<") 被调用了!!!"<<endl;}
Class(int num):str("null"),num(num) {cout<<"Class(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
class base: public Class
{
public:
base(string str):Class("base"),str(str),num(0) {cout<<"base(string "<<str<<") 被调用了!!!"<<endl;}
base(int num):Class("base"),str("null"),num(num) {cout<<"base(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
class base1:virtual public base
{
public:
base1(string str):base("base1 virtual"){cout<<"base1(string "<<str<<") 被调用了!!!"<<endl;}
base1(int num):base("base1 virtual"){cout<<"base1(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
class base2:virtual public base
{
public:
base2(string str):base("base2 virtual"){cout<<"base2(string "<<str<<") 被调用了!!!"<<endl;}
base2(int num):base("base2 virtual"){cout<<"base2(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
class derived:public base1,public base2
{
public:
derived(string str):base1("derived"),base2("derived"),base("derived"){cout<<"derived(string "<<str<<") 被调用了!!!"<<endl;}
derived(int num):base1("derived"),base2("derived"),base("derived"){cout<<"derived(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
class final:public derived,public Class
{
public:
final(string str):derived("final"),base("final"),Class("final"){cout<<"final(string "<<str<<") 被调用了!!!"<<endl;}
final(int num):derived("final"),base("final"),Class("final"){cout<<"final(num "<<num<<") 被调用了!!!"<<endl;}
private:
int num;
string str;
};
void main()
{final a("aaa");
}
提示错误是:"error C2584: 'final' : direct base 'Class' is inaccessible; already a base of 'derived'"