web-dev-qa-db-fra.com

Comment initialiser un tableau de struct en C ++?

J'ai le struct suivant dans mon code C++ (j'utilise Visual Studio 2010):

struct mydata
{
    string scientist;
    double value;
};

Ce que je voudrais faire, c'est pouvoir les initialiser rapidement, comme pour l'initialisation de tableau en C99 ou l'initialisation de classe en C #, quelque chose á la:

mydata data[] = { { scientist = "Archimedes", value = 2.12 }, 
                  { scientist = "Vitruvius", value = 4.49 } } ;

Si ce n'est pas possible en C++ pour un tableau de structures, puis-je le faire pour un tableau d'objets? En d'autres termes, le type de données sous-jacent pour un tableau n'est pas si important, il est important que j'ai un tableau, pas une liste, et que je puisse écrire des initialiseurs de cette façon.

30
Alexander Galkin

La syntaxe en C++ est presque exactement la même (il suffit de laisser de côté les paramètres nommés):

mydata data[] = { { "Archimedes", 2.12 }, 
                  { "Vitruvius", 4.49 } } ;

En C++ 03, cela fonctionne chaque fois que le type de tableau est un agrégat . En C++ 11, cela fonctionne avec tout objet ayant un constructeur approprié.

52
Björn Pollex