【发布时间】:2015-10-08 15:46:52
【问题描述】:
我正在处理一个现有项目,该项目有一个类,我需要一个备用成员函数定义。我不想修改现有的成员函数或其签名,只是一个替代定义,必须根据一些 xml 文件选择运行时(编译时标志不是首选)。 我是 C++ 新手,所以这可能是一个愚蠢的问题。
请建议设计指南,这样我就不必更改和测试现有代码库,只需插入我的实现即可。
示例
class ABC{
public:
int operate(int, int);
}
//Assume below method to be existing implementation
ABC::operate(int op1, int op2)
{
return op1+ op2; //add
}
//Alternate desired implementation
ABC::operate(int op1, int op2)
{
return op1 * op2; //multiply
}
理想情况下,我希望上面是运行时选择,但如果这是唯一的方法,则可能会落入编译时间。
【问题讨论】:
-
你已经尝试过了吗?欢迎提供一点草稿和更具体的内容。选择编译时 xml 文件究竟是什么意思?
-
你希望如何在编译时读取 xml 文件?
-
这完全取决于您使用的构建系统。例如,使用 makefile 是可行的。使用 Visual Studio IDE,我看不到一个简单的方法。
-
由于不能在 C++ 代码内部完成,所以必须在编译器外部完成,类似于在编译前读取 xml 并更改编译的脚本,fe 通过将编译宏插入VS 项目文件。但我想知道在任何情况下这样的解决方案是否有意义。
-
if和switch语句是您根据某些运行时条件选择要执行的代码分支的方式。
标签: c++ design-patterns