Хм, а комусь реально множинне наслідування дуже потрібне? Хіба щоб пальці віялом, як правило...
Потрібні речі нескладні, складні -- непотрібні. (с) Г. С. Сковорода.
class I2DObject
{
public:
virtual void CreateObject2D() = 0;
virtual void DestroyObject2D() = 0;
};
class I3DObject
{
public:
virtual void CreateObject3D() = 0;
virtual void DestroyObject3D() = 0;
};
class UniversalObject :
public I2DObject,
public I3DObject
{
public:
virtual void CreateObject2D();
virtual void DestroyObject2D();
virtual void CreateObject3D();
virtual void DestroyObject3D();
protected:
// some data requiered to our objects
};
void UniversalObject::CreateObject2D()
{
// some code
}
void UniversalObject::DestroyObject2D()
{
// some code
}
void UniversalObject::CreateObject3D()
{
// some code
}
void UniversalObject::DestroyObject3D()
{
// some code
}
int main()
{
I2DObject *my2D;
I3DObject *my3D;
// work with 2D object
my2D = new UniversalObject;
my2D->CreateObject2D();
my2D->DestroyObject2D();
delete my2D;
// work with 3D object
my3D = new UniversalObject;
my3D->CreateObject3D();
my3D->DestroyObject3D();
delete my3D;
return 0;
}
Звісно і без множинного наслідування таке реально, але ж наскільки приємніше. Дійсно - ПРОСТО і гарно. Хоча можливо і Object Pascal дозволяє щось подібне - цього я не знаю. Але якщо хтось підкаже, то буду дуже вдячним