列挙型と対応する配列との間をタイトにバインドしても問題ありませんか
これらは理解を深めるための単なる擬似コードであることに注意してください。
方法 1. 1 つの方法は、宣言を作成して配列を定義することです。
enum Names
{
ABC,
DEF,
GHI
};
char* names[] = {"abc", "def", "ghl"}; // Declare and define.
値を取得するには
char *nm = names[ABC];
この方法には、列挙型と名前配列を同期させておく必要があるという欠点があります。つまり、列挙型を変更して特定の値を移動する場合、それらはテーブルでも行う必要があります。
例: DEF を列挙型の先頭に移動します。
enun Names { DEF、ABC、GHI };
// 配列も変更します。
char* names[] = {"def", "abc", "ghi"}
方法 2。
列挙型と配列の間のバインドを解除する 1 つの方法は、以下のような create 関数を使用することです。
int CreateNamesArray() {
Names[GHI] = "ghl";
Names[DEF] = "def";
Names[GHI] = "ghi";
};
これにより、列挙型が変更されても、配列は影響を受けません。このアプローチの欠点の 1 つは、テーブルにアクセスする前に関数を呼び出す必要があることです。
どのアプローチが良いか提案してください。テーブルは約 30 ~ 100 エントリになります。