类包装和调度程序

时间:2011-12-22 09:02:46

标签: c++

假设我有A级。

我想编写一些包装器,它将包装一些函数,添加一些新函数和所有其他函数调度到A类。并希望它在客户端代码中自然地看。我认为它需要某种内省,在C ++中可能是不可能的,但也许我错了。

在Cody Gray评论之后添加:

我有一个用于打印的课程。它有方法SetX,SetY,SetDX,SetDY和gettes等等。我想创建一个类,它也有方法SetBaseX,SetBaseY和包装SetX,SetY根据给定的Base,但不想包装DX方法。并且也不想使用继承来防止从包装器类转换为A.我不仅有A,所以包装器必须能够包装许多实现某些接口的类。

2 个答案:

答案 0 :(得分:2)

您必须手动为包装类的所有函数编写委托包装器。 C ++中没有内省可以自动执行此操作。

答案 1 :(得分:2)

您想使用合成。

B类是A类的包装器.B类在其构造函数中实例化A类并在其析构函数中删除它,因此B负责A。

B类声明自己的方法和A类的方法,当调用A的一个方法时,它将它调度到本地的A类变量并返回结果。