Ich habe eine statische Zuordnung der ID < => Struct-Paare, und jede Struktur sollte einige Arrays enthalten. Zur Kompilierzeit ist alles bekannt. Das heißt, ich möchte hier so etwas haben:Statische Initialisierung einer Struktur mit Arrays unterschiedlicher Länge
ID1 => name: someString
flagCount: 3
flags: [1, 5, 10]
statisch erstellt (wenn möglich). Natürlich ist eine Erklärung wie:
struct Info
{
const char* name;
int flagCount;
int flags[];
};
würde so lange ideal, wie ich es wie ...
initialisieren konnteInfo infos [] = { ... };
was nicht möglich ist, aufgrund der Arrays unterschiedlicher Länge (außer I Ich vermisse etwas. Alternativ habe ich über (ab) boost::assign
dafür verwendet, aber ich frage mich, ob es eine empfohlene Lösung dafür gibt. Mir geht es gut, wenn ich nur die Info-Strukturen in einem Array speichern kann und an anderer Stelle.
Bearbeiten: Ein Hinweis auf die aktuelle Lösung. Im Moment habe ich:
struct Info
{
Info (const std::vector<int>& flags) : flags {}
std::vector<int> flags;
};
und ich verwende: (Template-basierte)
const std::map<ID, Info> map = boost::assign::map_list_of
("ID1", Info (boost::assign::list_of (1)(2)(3));
das funktioniert, ich bin nur neugierig, ob es eine einfachere Lösung.
Kennen Sie die Länge der Flags-Array für jedes Info-Objekt im Array zur Kompilierzeit? – dirkgently
Ja. Für verschiedene Infos ist es jedoch anders. – Anteru