Виртуальная наследственность классов

217
10 апреля 2018, 05:27

Приветствую, у меня вопрос. По поводу классов:

#include <iostream>
using namespace std;
class A
{
   public:
    void f() {
        cout << "It's A" << endl;
             }
};
class B: virtual public A {
public:
    void f()
    {
        cout << "It' s B" << endl;
    }
};
class C: virtual public A {
public:
    void f()
    {
        cout << "It's C" << endl;
    }
};
class D: public C
{
public:
    void f()
    {
        cout << "It's D" << endl;
    }
};
class E: public C {
public:
    void f()
    {
        cout << "It's E" << endl;
    }
};
class F:  public C {};
int main ()
{
    F JESUS;
    JESUS.f();
}

В итоге выводит "It's C"

Вопрос по поводу класса "F". Т.к. у меня всё "ссылается" к классу "A", из-за этого мы можем использовать только один производный класс (для "F", разумеется, но я могу написать любой класс, кроме B). И если мы заиспользуем больше производных классов, то получим ошибка о "неявности". Вроде так... Если я не прав, то как реализовать класс "F"?
Вопрос, правильно ли я рассуждаю?
Вот таблица, по которой я руководствовался:

READ ALSO
Ассоциативные контейнеры в с++

Ассоциативные контейнеры в с++

Здравствуйте! У меня возникла следующая проблема, не могу подобрать контейнер для хранения переменных и их значенийК слову, map подходил почти...

203
system(&ldquo;&hellip;&rdquo;) В C++ [требует правки]

system(“…”) В C++ [требует правки]

Напишите мне несколько примеров функции system()

196
Привидение к неполному типу void [дубликат]

Привидение к неполному типу void [дубликат]

На данный вопрос уже ответили:

225
Генерация документации Vue

Генерация документации Vue

Проект построен на Vue компонентахВ каждом компоненте есть свои методы и т

193