コードのある時点で値を変更する定義を条件付きで使用できるかどうか疑問に思っていました。基本的には次のようなものです:
//////////////////////////////////////////// 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( ) より複雑な方法のように思えます。しかし、プリプロセッサ ディレクティブでそれができない場合は、親クラスへのポインタを使用する必要があります。