【发布时间】:2013-11-08 15:51:35
【问题描述】:
我想知道是否可以定义在条件中使用代码中某个点的更改值。基本上是这样的:
//////////////////////////////////////////// SomeFile.cpp
#define SHUTDOWN false
while(window->isOpen())
{
if(SHUTDOWN)
window->close();
// Rest of the main loop
}
//////////////////////////////////////////// SomeOtherFile.cpp
if(Escape.isPressed())
{
#undef SHUTDOWN
#define SHUTDOWN true
}
从而导致应用关闭。如果不是,会有类似的功能
RenderWindow* getWindow()
{
return window;
}
然后调用
if(Escape.isPressed())
getWindow()->close();
最好的方法是什么?我宁愿不走那条路,因为调用键事件的类是控制主循环和窗口的类的成员,所以我必须在较小的类中设置指向包含类的指针才能调用 getWindow( ),这似乎是一种更复杂的方法。但是如果我不能用预处理器指令来做到这一点,我只需要使用指向父类的指针。
【问题讨论】:
-
到底为什么要使用
define(而不是普通变量)?这是预处理器指令,它只在编译时执行一次,而不是在运行时。 -
您完全误解了预处理器指令。它们在编译时进行评估。
-
普通变量在哪里,以便我可以从这些类的范围内访问它?调用该事件的类甚至都不知道父母的存在。事实上,当它们被实例化时,它们会进入一个类中的一个向量,该类是整个类的成员。
标签: c++ c-preprocessor