Множественное наследование

фотка 1

#include <QtCore/QCoreApplication>
#include <QDebug>

class Abstract
{
public:
    virtual void echo()
    {
        qDebug() << "   class Abstract";
    }

    //virtual void echo2()=0;
};

class A1: public Abstract
{
public:
    A1()
    {
        qDebug() << "constructor A1";
    }

    void echo()
    {
        qDebug() << "class A1";
    }
};


class A2: public Abstract
{
public:
    A2()
    {
        qDebug() << "constructor A2";
    }
    void echo()
    {
        qDebug() << "class A2";
        Abstract::echo();
    }
};

class Common: public A2,  public A1
{
public:

    Common(): A2(),A1()
    {
        qDebug() << "constructor Common";
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Common com;

    A2 *a2 = &com; 
    a2->echo();

    A1 *a1 = &com;
    a1->echo();
    return a.exec();
}

Тут главный результат , что присваивание указателя срабатывает корректно:
A2 *a2 = &com;

То есть имея указатель на объект потомок мы корректно получаем указатель на один из объектов родителей и корректно вызываем именно его функцию.

фотка 2

Файлы для скачивания