Множественное наследование - синтаксис C++ для виртуальных функций
От: __watcher__ Удмуртия  
Дата: 04.12.12 20:59
Оценка:
Имеем следующий код:
class A {
 public:
  virtual void f() = 0;
};
class B : public virtual A {
 public:
  void somethingB ();
  virtual void f() { somethingB (); }
};
class C : public virtual A {
 public:
  void somethingC ();
  virtual void f() { somethingC (); }
};
class D: public B, public C, public virtual A {
 public:
  ...
};

Вопрос: обязательно ли для D определять свою реализацию для f: "void f(){ B::f () }"?
Или можно написать что-то вроде "using void B::f ();"?
Re: Множественное наследование - синтаксис C++ для виртуальных функций
От: LaptevVV Россия  
Дата: 05.12.12 08:34
Оценка: +1
Здравствуйте, __watcher__, Вы писали:

___>Имеем следующий код:

___>
___>class A {
___> public:
___>  virtual void f() = 0;
___>};
___>class B : public virtual A {
___> public:
___>  void somethingB ();
___>  virtual void f() { somethingB (); }
___>};
___>class C : public virtual A {
___> public:
___>  void somethingC ();
___>  virtual void f() { somethingC (); }
___>};
___>class D: public B, public C, public virtual A {
___> public:
___>  ...
___>};
___>

___>Вопрос: обязательно ли для D определять свою реализацию для f: "void f(){ B::f () }"?
___>Или можно написать что-то вроде "using void B::f ();"?
Не обязательно. Посмотрите на "принцип доминирования".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.