class base
{
public:
base()
{
cout << "base" << endl;
}
virtual ~base(){}
};
class a : public base
{
public:
a()
{
cout << "a" << endl;
}
~a(){}
};
class b : public base
{
public:
b()
{
cout << "b" << endl;
}
~b(){}
};
class test : public a, public b
{
public:
test()
{
cout << "test" << endl;
}
~test(){}
};
int main()
{
base * m = new test(); // error C2594: 'initializing' : ambiguous conversions from 'test *' to 'base *'
getchar();
return 0;
}
множественное наследование
суть вопроса будет ясна из программки:
Код:
если делаю так:
Код:
class test : public base, public a, public b
{
public:
test()
{
cout << "test" << endl;
}
~test(){}
};
{
public:
test()
{
cout << "test" << endl;
}
~test(){}
};
компилируется, но выдает предупреждение о том что base уже является базовым классом для a и для b
в общем - как нормально это реализовать?
необходимо хранить указатели на объекты, но указатели все должны быть base.
понимаю что коряво. :D
проблема решилась виртуальным наследованием. :D
тема закрыта