私は識別子< =>構造体のペアの静的マップを取得しています。各構造体には配列が含まれている必要があります。コンパイル時にはすべてが分かっています。つまり、私はここにこのようなものを持っています:可変長の配列で構造体を静的に初期化する
ID1 => name: someString
flagCount: 3
flags: [1, 5, 10]
静的に(可能な場合)作成します。もちろん、のような宣言:
struct Info
{
const char* name;
int flagCount;
int flags[];
};
は限り私は...のように私を除いて、様々な長さの配列に起因することはできません
Info infos [] = { ... };
を、(それを初期化する可能性があるので、理想的です何かが足りない)。あるいは、私は約(ab)boost::assign
を使っていますが、これに推奨される解決策があるかどうかは疑問です。私は情報構造体だけを配列に格納し、他の場所にマッピングすることができればうまくできます。
編集:現在の解決策に関するメモ。現時点では、私が持っている:
struct Info
{
Info (const std::vector<int>& flags) : flags {}
std::vector<int> flags;
};
と私が使用します(?テンプレートベース)
作品const std::map<ID, Info> map = boost::assign::map_list_of
("ID1", Info (boost::assign::list_of (1)(2)(3));
、私は簡単な解決策があるかどうかだけ興味があります。
コンパイル時に配列内の各Infoオブジェクトのフラグ配列の長さを知っていますか? – dirkgently
はい。ただし、異なるInfosでは異なります。 – Anteru