Некорректное наследование, когда дочерние классы должны включать друг друга в C++

Скажем, у меня есть класс A. Класс B и класс C являются дочерними классами A. Будет ли неправильная структура наследования, если класс C должен включать B?

изменить: пример

Скажем, у меня есть родительский класс Trip с двумя атрибутами: start и end. Мой первый унаследованный класс (B) от A называется SimpleTrip, у него есть добавленный атрибут, называемый транспортом (итого: начало, конец и транспорт). Мой второй унаследованный класс (C) от A называется CompoundTrip, у него есть два добавленных атрибута: массив SimpleTrips и количество поездок (итого всего: начало, конец, массив SimpleTrips, количество поездок). Составное путешествие - это "группа" простых поездок, но все же это путешествие.

1 ответ

Взгляните на это и попробуйте ответить "Что печатает ca()", не запуская программу, а затем попробуйте запустить ее.

#include <iostream>

struct A {
    virtual void a() {
        std::cout << "a" << std::endl;   
    }
};

struct B : A {
    virtual void a() override {
        std::cout << "b" << std::endl;
    };
};

struct C : A, B {
};

int main() {
    C c;
    c.a();
}

https://en.wikipedia.org/wiki/Multiple_inheritance

Другие вопросы по тегам