我有一个类有两种可能的实现,具体取决于预处理器开关。我处理这个问题的方法是创建“src\CompSwitch1\class.h”和“src\CompSwitch2\class.h”。在我的标准包含文件中,我使用
#ifdef CompSwitch1
#include "CompSwitch1\class.h"
#elif CompSwitch2
#include "CompSwitch2\class.h"
#else
#error "Specify CompSwitch1 or CompSwitch2"
#endif
这适用于我的大多数需要两个版本的类(class)。但是,其中一个出现链接器错误(lnk2019:未解析的外部符号)。我使用的是 MS Visual Studio 2005 和 2008,它们都出现了。
在 .h 文件的顶部,我针对预处理器选项进行了测试。 此外,虽然我只是为了简洁起见引用了 .h 文件,但在相应的目录中,每个文件都有一个 .cpp 文件。
最佳答案
听起来您可能已经包含其中一个类的头文件,但链接了另一个类的目标文件,或者两者都没有
关于c++ - 预处理器开关确定类的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126705/