我正在使用C++代码在Visual Studio 2010中工作。我想做的是在运行时更改预处理器指令的值,不确定是否可行,但是我已经尝试过了。
somefile.h
static int mValue = 0;
#define POO = mValue;
...
#if POO 0
//define class methods
#else
//define class methods differently
}
main.cpp
main()
{
//Code calls constructor and methods allowed when POO is 0
//Code increments mValue
//Code calls constructor and methods allowed when POO is 1
}
如何更改POO,以便类对象使用其他方法的不同实现?或者,如果不可能的话,还有另一种方法吗?
最佳答案
您似乎对“预处理器”指令的性质感到困惑。这些仅在编译器处理之前存在。编译器在编译步骤中消除(替换/处理)宏定义。它们在运行时不存在更改。实际上,它本身就是一种迷你语言,只能编译为c/c++代码,然后由编译器进行处理。
听起来您希望您的类基于某种运行时输入而成为两种不同的事物。这可能表明存在设计问题。您可能会考虑定义两个不同的类(可能具有共同的琐碎基类)。