Имеем следующий код:
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 ();"?
Здравствуйте, __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 ();"?
Не обязательно. Посмотрите на "принцип доминирования".