【C++11】 構造体テーブルでgenericなデータテーブルを作成したい

前提

・C++11(G++コンパイラでstd=c++11指定)

実現したいこと

色々なのデータを扱うテーブルを作成したいと思っています。
メンバ名は出せないので適当なものをはめ込んでいます。

// [データごとのoptionとなるデータ構造]
typedef struct
{
string name;
int default;
int min;
int max;
} option1_t ;
// option2_t 、option3_t もそれぞれ定義

// [データに対応したオプションを可変するための構造体(本当はunionにしたかったがコンパイルエラー)]
typedef struct
{
option1_t option1;
option2_t option2;
option3_t option3;
}

// [データテーブルの構造体定義]
typedef struct
{
target_common *tat;
const option_t option;
} table_t;

// データテーブル本体
const tabel_t TABLE[] =
{
{ &Data1, {.option1 = {"name", 0, -1, 1}}},
{ &Data2, {.option2 = {...}}},
{ &Data3, {.option3 = {...}}},
};

※target_common は参照データの基底クラスのポインタです。
既定クラスを継承した様々なデータをテーブルに書きます。

発生している問題・エラーメッセージ

g++だと、上記のテーブル作成方法の構造体メンバ指定の初期化はできないようでした。(C99では可能な記法)

何か良い書き方があれば教えていただけないでしょうか?(テーブルで一括管理したい)

コメントを投稿

0 コメント