C++ C++;从数组中引用布尔值时出现问题

C++ C++;从数组中引用布尔值时出现问题,c++,arrays,menu,boolean,directx,C++,Arrays,Menu,Boolean,Directx,我正在为一个游戏开发一个新的directX菜单,因为我以前的菜单已经过时了,而且编码很差 我目前在数组和循环中做了很多工作,但我有一个问题。当我加载一个带有布尔值的数组,然后遍历该数组并将布尔值传递给一个函数时,它将不起作用 按下菜单上的按钮时,必须启用或禁用布尔值。当我尝试在不使用数组的情况下直接执行时,它是有效的。当我想要布尔值时,它会被启用和禁用 我现在不知道为什么当我简单地将布尔值添加到一个循环中时,它不会被识别 循环代码: const char* ButtonArray[] =

我正在为一个游戏开发一个新的directX菜单,因为我以前的菜单已经过时了,而且编码很差

我目前在数组和循环中做了很多工作,但我有一个问题。当我加载一个带有布尔值的数组,然后遍历该数组并将布尔值传递给一个函数时,它将不起作用

按下菜单上的按钮时,必须启用或禁用布尔值。当我尝试在不使用数组的情况下直接执行时,它是有效的。当我想要布尔值时,它会被启用和禁用

我现在不知道为什么当我简单地将布尔值添加到一个循环中时,它不会被识别

循环代码:

    const char* ButtonArray[] = { "Button1", "Button2", "Button3" };
bool varsArray[] = { bool1, bool2, bool3};

int iWrapperHeight = (ARRAYSIZE(ButtonArray) + 1) * iItemHeight;
defWrapperHeight = iWrapperHeight;

Wrapper* wrapper1 = new Wrapper(0, iBodyX, iBodyY, iTabWidth, iWrapperHeight, "Wrapper");
wrapper1->Draw();

CreateOption* option = new CreateOption(0, iBodyX, iBodyY += (iItemHeight * 0.5), iW, iH);
for (int i = 0; i < ARRAYSIZE(ButtonArray); i++) {
    option->ToggleButton(iItemHeight, ButtonArray[i], varsArray[i]);
}

代码是有效的。这显然不是我想要的,因为3个按钮将影响相同的布尔值。 我的ToggleButton函数如下所示

void ToggleButton(int iYAdder, const char* szTitle, bool& bVar)
如果鼠标在正确的位置&鼠标点击:bVar=!bVar

所以,是的,我一直在四处寻找,如果我可能搞砸了阵列的工作,我不确定。 我们将非常感谢您的帮助

关于

这里只是猜测,因为您没有显示,所以我们不知道如何检查或使用数组中的值

bool
数组定义并初始化为

bool varsArray[] = { bool1, bool2, bool3};
这意味着您将原始值从
bool1
复制到
bool3
。然后将这些新值传递给
ToggleButton
函数,这意味着该函数中的引用将是对数组元素的引用

我的猜测是,您没有检查数组,而是通过
bool3
检查不同的变量
bool1
,这当然不会改变,因为您没有传递对这些变量的引用


您需要重构代码,通过
varsArray[2]
检查
varsArray[0]
的值,或者创建一个引用数组(或者更确切地说,因为无法使用as created by直接创建一个引用数组)。

您能否详细介绍一下“它不起作用”部分?它怎么不起作用?你怎么注意到的?你注意到了什么?任命。当我记录布尔值时,它表示值为1。这是没有意义的,因为一旦值达到1,我就会将按钮颜色渲染为绿色。否则,当值为0时保持灰色。在我的例子中,我说这是可行的,但这不是我想要实现的。当我按下按钮时,按钮变成绿色。问题是所有3个按钮都亮了,因为我用相同的布尔值运行代码3次。我猜我的for循环是不正确的调用,当函数执行其
bVar=!bVar
flip,它正在翻转
varsArray
元素的值。它不是翻转该元素最初初始化的
boolX
变量的值。两者之间没有神奇的联系。似乎您正在调试器中查看
boolX
变量,并期望它们发生更改-这不会发生。
void ToggleButton(int iYAdder, const char* szTitle, bool& bVar)
bool varsArray[] = { bool1, bool2, bool3};