PavelK
@PavelK

Наследование и как правильно привести типы интерфейсов?

Приветствую!
Помогите, пожалуйста, понять, как лучше сделать:
и так, есть класс A и его интерфейс IA, который наследуется от класса B с интерфейсом IB
class A: public IA, public B
{
public:
 void a();
}

class IA 
{
public:
 virtual a()=0;
}

class B: public IB
{
public:
 void b();
}

class IB 
{
public:
 virtual b()=0;
}

В некотором месте программы я получаю указатель на IA*,
но мне нужно вызвать методы от B,
но интерфейс IA не наследуется от IB (если бы наследовался, то будет ошибка "... is ambiguous" ),
а использовать можно только IA или IB без возможности получить доступ к A или B.

Так вот, как мне наиболее правильно создать эти два класса и их интерфейсы (A, IA, B, IB), что бы можно было делать так:
IA * a = ....;
a->b(); ???
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
PavelK
@PavelK Автор вопроса
Йа дятел. Решение то простейшее - виртуальное наследование!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы