[ad_1]
Let's assume I have classes Child
and Parent
, where Child
extends the Parent
:
class Parent
void foo() cout << "foon";
void bar() cout << "barn";
void jar() cout << "jarn";
;
class Child: public Parent
void child_method1();
void child_method2();
;
Now I want to export some of the Child
functionality using the following interface:
class Interface
public:
virtual ~Interface()
virtual void foo() = 0;
virtual void bar() = 0;
protected:
Interface()
;
As you can see the interface methods are all already implemented in Parent
. How do I properly define Child
so that the Interface
is delegated to the Parent
?
I'm trying to do it like:
class Child: public Parent, public Interface
void child_method1();
void child_method2();
But the compiler complains that the virtual methods foo()
and bar()
are not implemented in Child
.
If I write an explicit delegation like this:
class Child: public Parent, public Interface
void foo() Parent::foo();
void bar() Parent::bar();
void child_method1();
void child_method2();
the compiler doesn't complain.
Is it necessary to write the explicit delegation? What is the proper way to delegate the virtual methods to a sister class?
[ad_2]
لینک منبع