假设我有A级。
我想编写一些包装器,它将包装一些函数,添加一些新函数和所有其他函数调度到A类。并希望它在客户端代码中自然地看。我认为它需要某种内省,在C ++中可能是不可能的,但也许我错了。
在Cody Gray评论之后添加:
我有一个用于打印的课程。它有方法SetX,SetY,SetDX,SetDY和gettes等等。我想创建一个类,它也有方法SetBaseX,SetBaseY和包装SetX,SetY根据给定的Base,但不想包装DX方法。并且也不想使用继承来防止从包装器类转换为A.我不仅有A,所以包装器必须能够包装许多实现某些接口的类。
答案 0 :(得分:2)
您必须手动为包装类的所有函数编写委托包装器。 C ++中没有内省可以自动执行此操作。
答案 1 :(得分:2)
您想使用合成。
B类是A类的包装器.B类在其构造函数中实例化A类并在其析构函数中删除它,因此B负责A。
B类声明自己的方法和A类的方法,当调用A的一个方法时,它将它调度到本地的A类变量并返回结果。