如何在类层次结构上构建包装器
How to build a wrapper on a class hierarchy?
我有一个现有的类层次结构。我想在上面写一个包装器,它重命名旧类中的旧类和方法。有可能实施吗?例如
class OldBase
{
public:
void OldMethod();
};
class OldDerive : public OldBase
{
public:
void OldMethod();
};
将"旧"名称替换为"新"名称,但使用旧的现有实现。
根据您的实际需求,您有很多方法可以做您想做的事情。
-
第一种(可能也是最糟糕的)方法是使用
#define
来重命名函数。它有很多缺陷,但如果你的类层次结构不大,并且你没有使用包装器做一个大项目,它也可以。 -
您也可以将包装器实现为
class
。这可能是最好的方法。类包装器{私人:OldBase*base;wrapper(){base=0;};公共:void newMethod();wrapper(OldBase*wrappedObject);};
然后,您只需通过执行wrapper myWrapper(&myBaseObj);
来完成一个包装,并根据需要使用它。当然,您也可以将任何派生类传递到包装器中,甚至可以设计一个构造函数,它采用引用而不是指针,并在构造函数中采用地址。
相关文章:
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 使用 VS2015 在 Windows 10 上构建 Fortran .lib x64 位并将其链接到 C++
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 坚持编译QDoc以在Windows上构建qt5
- MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到使用 CL 编译的
- 使用 CMake 在 Windows 10 上构建 uWebSockets
- sizeof 函数如何在带和不带位字段的结构上工作?(填充)
- 如何在 Linux 上构建 wxWidgets 示例
- 未使用的 asm() 在不受支持的体系结构上的行为
- 复制引用结构上的赋值
- 有了memory_order_relaxed,原子变量的总修改顺序如何在典型体系结构上得到保证
- 如何在多个成员阵列上构建合并视图
- gRPC C++如何在Windows 10上构建
- 如何在Windows上构建Skia
- C 嵌套结构上的 g++ 编译错误
- 无法在 Linux 上构建opencv_contrib模块
- 结构上溢出的整数加法
- 在通过 P/Invoke 获取的 C++ 结构上设置 C# 回调
- 在包含浮点数的结构上使用 memset()
- 如何在类层次结构上构建包装器