J'ai un exemple simple où je crée un std::array
de certains nombre d'éléments Foo:utilisateur d'appel constructeur défini sur des éléments dans std :: tableau
struct Foo
{
Foo(int bar=0) : m_bar(bar)
{
// Code depending on the value of bar
}
int m_bar;
};
const unsigned int num = // get array size
std::array<Foo, num> fooArr;
Quand j'utiliser la liste initialiseur dans le constructeur m_bar(bar)
ce jeux tous les Foo.m_bar
à 0
(car il s'agit de la valeur par défaut du constructeur). Si je ne fais pas cela, alors il est plein avec des valeurs de déchets.
Ma question est comment puis-je passer une autre valeur différente de la valeur par défaut au constructeur de chaque élément dans le tableau sans connaître la taille du tableau avant la main?
J'ai essayé d'utiliser une liste init lors de la création du tableau, comme ceci: std::array<Foo, 5> fooArr{3}
mais cela ne fait que définir le m_bar
du premier élément à 3
.
Qu'en est-fooArr {{1,2,3,4,5}}? – Gombat
Désolé, ce n'était pas très clair, mais je ne devrais pas connaître la taille du tableau avant la main, pour être en mesure de le faire. J'ai modifié la question en conséquence. –
Dans Cppreference, il y a cet exemple: std :: array a3 = {std :: string ("a"), "b"}; Est-ce ce que vous cherchez? –
Melkon