LINUX.ORG.RU

[C++] Проблемы с «ромбическим» наследованием


0

0

Всем привет!

Имеется такой набор классов. Первые 2 НЕ мои, я их менять не могу:

class A
{
  public: virtual void f() = 0;
};

class B : public A // обратите внимание на отсутствие слова virtual!
{
  public: void f() {...}
};

И есть мой класс:

class C : public A // если это важно, класс C - чисто абстрактный
{
  ... // метод f() я не трогаю!
};

Теперь товарищ, пользующийся моим классом хочет сделать следующее:

class D : public B, public C
{
  ...
};

Сможет ли он сделать такую штуку, если нет, то могу ли я чем-нибудь ему помочь?

Заранее спасибо.

★★

> Сможет ли он сделать такую штуку, если нет, то могу ли я чем-нибудь ему помочь?

сможет, заодно man virtual

lester ★★★★ ()

На сколько я помню Страуструпа, то class A будет задействован 2 раза. Это может лечится виртуальным наследованием, но я им не пользовался(изза ненадобности).

SV0L0CH ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.