我有一些bool和int變量,需要通過某種索引訪問。我找到了一種方法,但似乎有點太複雜。有沒有辦法以更優雅的方式做到這一點?с++索引訪問不同類型的結構變量
現在在頭文件中我有結構
struct FDialogueFlags
{
bool tmpFlag1;
bool tmpFlag2;
// bool tmpFlagX;
int tmpState1;
int tmpState2;
// int tmpStateX;
};
和枚舉
enum class Eflags
{
// NAME = flag_ID,
TMP_FLAG_1 = 1,
TMP_FLAG_2 = 10,
// TMP_FLAG_X = XX,
TMP_STATE_1 = 101,
TMP_STATE_2 = 110,
// TMP_STATE_X = XXX,
};
而在源文件我已經功能,對於給定的索引返回值 - FLAG_ID
int GetFlagValue(int flag_ID)
{
switch (Eflags(flag_ID))
{
case (Eflags::TMP_FLAG_1):
return flagsAndStates.tmpFlag1;
break;
case (Eflags::TMP_FLAG_2):
return flagsAndStates.tmpFlag2;
break;
/*case (Eflags::TMP_FLAG_X):
return flagsAndStates.tmpFlagX;
break;*/
case (Eflags::TMP_STATE_1):
return flagsAndStates.tmpState1;
break;
case (Eflags::TMP_STATE_2):
return flagsAndStates.tmpState2;
break;
/*case (Eflags::TMP_STATE_X):
return flagsAndStates.tmpStateX;
break;*/
default:
break;
}
}
這樣每次我需要添加新的「標誌」或「狀態」時,我必須在我的代碼中編輯3個位置。
再說,如果我需要以書面枚舉它的名稱來訪問任何「標誌」或「國家」,我不能這樣做,因爲Eflags (TMP_FLAG_1)
回報TMP_FLAG_1
,而不是數量。另一件重要的事情是,我想保留變量名稱,可能會有多達數百個這樣的「標誌」和「狀態」,並且它們具有唯一的名稱而不僅僅是迭代數字的代表性(上面的代碼只是一個例如,在最終產品中,我會根據它們的含義命名它們) 如果可能,我想避免使用std::map
,因爲它不受UE4本機支持。 所以,核心思想是通過給定的數字訪問一定數量的不同數字類型的變量,可能會保留變量命名。
謝謝!
爲什麼你需要訪問它們索引明智?持續時間訪問或語法糖? –
任何你不想使用int和bools向量的理由? – UKMonkey
好吧,如果這些將只是布爾和整數,並假設數量和重複是相當低的,你可以使用整數數組。 –