我有一个现有的类层次结构。我想在上面写一个包装器,它重命名旧类中的旧类和方法。有可能实现它吗?例如
class OldBase
{
public:
void OldMethod();
};
class OldDerive : public OldBase
{
public:
void OldMethod();
};
将“旧”名称替换为“新”名称,但使用旧的现有实现。
答案 0 :(得分:2)
根据您的实际需要,您有很多方法可以做您想做的事。
第一个(也可能是最差的)是使用#define
重命名您的功能。它有很多缺陷,但如果您的类层次结构不大并且您没有使用包装器进行大型项目,那么它可以很好。
您还可以将包装器实现为class
。这可能是最好的方式。
class wrapper{ private: OldBase *base; wrapper(){base=0;}; public: void newMethod(); wrapper(OldBase* wrappedObject); };
然后您只需执行wrapper myWrapper(&myBaseObj);
包装器,然后根据需要使用它。当然,您也可以将任何派生类传递给包装器,甚至可以设计一个构造函数,它接受引用而不是指针,并在构造函数中获取地址。