Запутался в наследовании
От: Аноним  
Дата: 04.07.08 09:45
Оценка:
Есть класс A:

class A
{
 protected:
  virtual void f() = 0;  
};
class B: private A
{
private:
 void f();
};


Нужно создать класс D чтобы он наследовал B и A и имел свою собственную функцию f, примерно так:
class D: private A, private B
{
  void f();
};


есть некоторая функция g(A*), которая вызывает A::f() и нужно, чтобы при вызове g из класса D:
g(this);


вызывалась D::f();

Грубо говоря, хочется чтобы B тихо и незаметно наследовал A, но дальше наследование не продолжалось. Виртуально наследовать A нельзя, так как B и D должны иметь свои собственные экземпляры А.

спасибо
Re: Запутался в наследовании
От: igna Россия  
Дата: 04.07.08 12:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Грубо говоря, хочется чтобы B тихо и незаметно наследовал A, но дальше наследование не продолжалось. Виртуально наследовать A нельзя, так как B и D должны иметь свои собственные экземпляры А.


Можно унаследовать от A класс C, в котором и определить витуальную функцию f, и "тихо и незаметно" сделать объект класса C членом класса B.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.