如何使布尔变量仅在设置为 true 时才为真?

How to make bool variable only true if its being set to true?

本文关键字:true 设置 何使布 变量      更新时间:2023-10-16

我有

namespace global {
bool global::Aimbot; // this must be set to false until something else doesnt set this to true
}

在我的函数中我正在做

inline void set_view_angles()
{
global::Aimbot = true;
// so everytime this func is called it set global::Aimbot to true
}

我调试了global::Aimbot bool,但有一个问题。 如果我调用函数set_view_angles()global::Aimbotfalse变为true,并且它true每一帧... 我希望global::Aimbot只有在调用set_view_angles()时才是正确的。

由于这个问题有多种解释,首先让我总结一下我从描述和评论中理解的问题:OP 希望将变量global::Aimbot设置为按下某个键时true,并在释放所述键时将其设置为false

答:当调用函数set_view_angles()时,它会将全局变量的状态global::Aimbot更改为true,并且它将保持true状态,直到某些东西将其更改回false,因此您可能需要一个新函数来完成这项工作。像这样:

inline void unset_view_angles()
{
global::Aimbot = false;
}

C++本身不提供知道是否按下键的方法,但您必须依靠一些外部库来实现这一点。在轮询或等待键盘事件的代码中,必须检查键的状态,并相应地调用unset_view_angles()set_view_angles()。例如,如果键是"Q",并且您正在使用 SDL 库轮询键盘事件,则可以执行以下操作:

SDL_Event event;
while (SDL_PollEvent(&event)) {
if(event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_q)
set_view_angles();
else if(event.type == SDL_KEYUP && event.key.keysym.sym == SDLK_q)
unset_view_angles();
}