如何在类层次结构上构建包装器

How to build a wrapper on a class hierarchy?

本文关键字:结构上 构建 包装 层次结构 层次      更新时间:2023-10-16

我有一个现有的类层次结构。我想在上面写一个包装器,它重命名旧类中的旧类和方法。有可能实施吗?例如

class OldBase
{
public:
    void OldMethod();
};
class OldDerive : public OldBase
{
public:
    void OldMethod();
};

将"旧"名称替换为"新"名称,但使用旧的现有实现。

根据您的实际需求,您有很多方法可以做您想做的事情。

  1. 第一种(可能也是最糟糕的)方法是使用#define来重命名函数。它有很多缺陷,但如果你的类层次结构不大,并且你没有使用包装器做一个大项目,它也可以。

  2. 您也可以将包装器实现为class。这可能是最好的方法。

    类包装器{私人:OldBase*base;wrapper(){base=0;};公共:void newMethod();wrapper(OldBase*wrappedObject);};

然后,您只需通过执行wrapper myWrapper(&myBaseObj);来完成一个包装,并根据需要使用它。当然,您也可以将任何派生类传递到包装器中,甚至可以设计一个构造函数,它采用引用而不是指针,并在构造函数中采用地址。