LINUX.ORG.RU

История изменений

Исправление RazrFalcon, (текущая версия) :

int main()
{
    struct B1 {
        virtual void foo() = 0;
    };

    struct B2 : B1 {
        virtual void bar() = 0;
    };

    struct C1 : B1 {
        void foo() { qDebug() << "C1::foo"; }
    };

    struct C2 : C1, B2 {
        void bar() { qDebug() << "C1::bar"; }
    };

    C2 c2;
}

Упс:

error: variable type 'C2' is an abstract class
    C2 c2;
       ^
note: unimplemented pure virtual method 'foo' in 'C2'
        virtual void foo() = 0;
                     ^

Исправление RazrFalcon, :

int main()
{
    struct B1 {
        virtual void foo() = 0;
    };

    struct B2 : B1 {
        virtual void bar() = 0;
    };

    struct C1 : B1 {
        void foo() { qDebug() << "C1::foo"; }
    };

    struct C2 : C1, B2 {
        void bar() { qDebug() << "C1::bar"; }
    };

    C2 c1;
}

Упс:

error: variable type 'C2' is an abstract class
    C2 c1;
       ^
note: unimplemented pure virtual method 'foo' in 'C2'
        virtual void foo() = 0;
                     ^

Исходная версия RazrFalcon, :

int main()
{
    struct B1 {
        virtual void foo() = 0;
    };

    struct B2 : B1 {
        virtual void bar() = 0;
    };

    struct C1 : B1 {
        void foo() { qDebug() << "C1::foo"; }
    };

    struct C2 : C1, B2 {
        void bar() { qDebug() << "C1::bar"; }
    };

    C2 c1;
}