Simple OO design issue
Hi,
I am relatively new to object oriented programming and design. I am
developing an application in VS 2005. I am having the following design
problem:
I have two interfaces X and Y. Y is derived from X as the following:
__interface X
{
public:
virtual void func1(int) = 0;
};
__interface Y: public X
{
public:
virtual void func2(int) = 0;
};
X interface is implemented in the class XImpl as follow:
class XImpl: public X
{
public:
void func1(int i)
{
cout << "In XImpl::func 1: i = " << i;
}
};
Now I want to have a class YImpl implementing func2() of Y interface.
func1 implementation should remain the same as in XImpl. How should I
define the class YImpl? Deriving it only from Y interface, as
class YImpl: public Y
will not allow me to use the func1() implementation of XImpl. I have
to rewrite the same function in YImpl then.
On the other hand inheriting YImpl multiply from XImpl and Y as
as
class YImpl: public XImpl, public Y
is not a good idea as X interface is included twice (and the VC++
complier is not allowing it either, rightly complaining that func1 is
ambiguous).
How should the class YImpl be defined and implemented? Please note
that I can change the definition or implementation of XImpl but not
the definition of X and Y interfaces as they have come from some other
sources on which I have no control.
Thanks in advance,
Patrick O'Brian