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

时间:2013-11-17 03:08:09

标签: c++

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 第一个(也可能是最差的)是使用#define重命名您的功能。它有很多缺陷,但如果您的类层次结构不大并且您没有使用包装器进行大型项目,那么它可以很好。

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

     class wrapper{
     private:
        OldBase *base;
        wrapper(){base=0;};
     public:
        void newMethod();
        wrapper(OldBase* wrappedObject);
     };
    
  3. 然后您只需执行wrapper myWrapper(&myBaseObj);包装器,然后根据需要使用它。当然,您也可以将任何派生类传递给包装器,甚至可以设计一个构造函数,它接受引用而不是指针,并在构造函数中获取地址。