1. 类B,有一个成员函数add()
class B
{
public:
virtual RECT& GetPos() const;
}
2. 类A公有继承基类B
class A : public B
{
public:
int Sub(int a, int b);
};
3. test()函数中,创建一个A类的对象subTest, 这个对象可以访问本类和父类成员函数。
void test()
{
A subTest = new A();
int sub, a = 5, b = 3;
RECT rc = subTest.GetPos(); //获取A类 subTest对象对应窗口X位置
sub = subTest.Sub(a, b);
}
问题:如果既想用A类对象的窗口位置,又不想A类依赖B类,怎么办?
4. 创建类C公有继承B类 A类
class C : public A, B
{
public:
C();
~C();
int sub(int a, int b);
private:
A *subTest;
};
C::C()
{
subTest = new A();
}
C::sub(int a, int b)
{
return subTest(a,b);
}
void test()
{
C subC = new C();
int sub, a = 5, b = 3;
RECT rc = subC.GetPos(); //获取C类 subTest对象对应窗口X位置
sub = subC.Sub(a, b);
}