私が求めているのがばかげたものなのかどうかさえわかりません。コードを書いてくださいと言っているわけではありませんが、何かをより良い方法で行うためのアイデアです。
次のような多数のアイテムを持つ構造体があります。
typedef struct _myStruct
{
int int1;
char char1;
int int2;
:
:
int int50;
}myStruct;
myStruct の各項目に対して 1 つのエントリを持つ別の列挙があります。
enum
{
eINT1,
eCHAR1,
eINT2,
:
:
eINT50
} PARAMETER_ID;
が入力として与えられmyStruct
たときに、のメンバーの値を返す各データ型 [int 用、char 用、string 用など] ごとに関数を作成したいと考えています。PARAMETER_ID
たとえば、引数として eINT1 が渡されたときint GetInt(PARAMETER_ID)
の値を返す関数が必要です。int1
同様にchar GetCharacter(PARAMETER_ID)
、float GetFloat(PARAMETER_ID)
などがあります。
構造体の項目数が多くなる場合があります。そのため、各アイテムにスイッチ ケースを使用することは、実行可能なオプションではありません。
私が考えることができる他の唯一のオプションは、構造変数とoffsetof()
関数のアドレスを使用してパラメーターのアドレスを計算しmemcpy
、必要なバイトを変数に入れることです。その場合、各パラメーターのオフセットをどこかに保持する必要がありますが、それは問題ではありません。
これを行うための代替オプションを探しています。どんな助けでも大歓迎です。
ありがとうございました。