簡體   English   中英

C++ 從數組中引用布爾值的問題

[英]C++ Problem with referencing a bool from an Array

我正在為游戲開發一個新的 directX 菜單,因為我以前的菜單已經過時並且編碼很差。

我目前在 arrays 和循環中做了很多事情,但我遇到了一個問題。 當我用一些布爾值加載一個數組時,我通過數組 go 並將布爾值傳遞給 function,它不會工作。

按下菜單上的按鈕時,必須啟用或禁用 boolean。 當我嘗試在沒有數組的情況下直接執行此操作時,它可以工作。 boolean 在我想要的時候被啟用和禁用。

我目前不知道為什么當我簡單地將它添加到循環中時不會識別 boolean。

循環代碼:

    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]);
}

這是我繪制包裝,繪制按鈕等的地方......

現在,如果我要改變

option->ToggleButton(iItemHeight, ButtonArray[i], varsArray[i]);

option->ToggleButton(iItemHeight, ButtonArray[i], bool1);

該代碼有效。 這顯然不是我想要的,因為 3 個按鈕會影響相同的 boolean。 我的切換按鈕 function 看起來像這樣。

void ToggleButton(int iYAdder, const char* szTitle, bool& bVar)

如果鼠標在正確的位置並且點擊了鼠標: bVar = !bVar

所以是的,如果我搞砸了陣列的工作,我一直在環顧四周,不確定。 任何幫助將不勝感激。

問候

只是在這里猜測,因為您沒有顯示最小的、可重現的示例,所以我們不知道您如何檢查或使用數組中的值。

您將bool數組定義並初始化為

bool varsArray[] = { bool1, bool2, bool3};

這意味着您將原始值從bool1復制bool3 然后將這些新值傳遞給ToggleButton function,這意味着 function 中的引用將是對數組元素的引用。

我的猜測是您不檢查數組,而是檢查不同的變量bool1bool3 ,這當然不會改變,因為您沒有傳遞對這些變量的引用。

您需要重構代碼以檢查varsArray[0]varsArray[2]的值,或者創建一個引用數組(或者更確切地說,因為不可能直接創建一個引用數組,使用std::reference_wrapper作為由std::ref創建)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM