Existe-t-il un meilleur moyen d'initialiser les structures C dans le code C++?Initialisation des structures C dans le code C++
Je peux utiliser des listes d'initialisation au point de déclaration de variable; cependant, ceci n'est pas utile si tous les arguments ne sont pas connus au moment de la compilation, ou si je ne déclare pas une instance locale/globale, par exemple:
Code C hérité qui déclare la structure, et possède également des API utilisant il
typedef struct
{
int x, y, z;
} MyStruct;
C++ code en utilisant la bibliothèque C
void doSomething(std::vector<MyStruct> &items)
{
items.push_back(MyStruct(5,rand()%100,items.size()));//doesn't work because there is no such constructor
items.push_back({5,rand()%100,items.size()});//not allowed either
//works, but much more to write...
MyStruct v;
v.x = 5;
v.y = rand()%100;
v.z = items.size();
items.push_back(v);
}
Création d'instances locales et la mise en chaque membre un à la fois (myStruct.x = 5;
etc) est une vraie douleur, et un peu difficile à lire en essayant de ajouter dire 20 différents articles au conteneur ...
êtes-vous à la recherche d'une solution en C ou C++? – Christoph