Maison >développement back-end >C++ >Pouvez-vous utiliser des initialiseurs de constructeur pour les membres d'un tableau en C ?
Initialiseurs de constructeur pour les membres d'un tableau en C
Lorsque vous travaillez avec des tableaux d'objets en C, les initialiser correctement peut être une tâche difficile. Cet article explore les limitations et les solutions de contournement pour l'utilisation d'initialiseurs de constructeur pour les membres du tableau.
Initialisation hors tableau
Dans l'exemple hors tableau, la barre de structure peut initialiser son membre foo utilisant un initialiseur de constructeur :
struct Bar { Foo foo; Bar() : foo(4) {} };
Initialisation du tableau
Cependant, dans l'exemple de tableau, la structure Baz ne peut pas initialiser son membre du tableau foo en utilisant la même syntaxe :
struct Baz { Foo foo[3]; // Incorrect Baz() : foo[0](4), foo[1](5), foo[2](6) {} };
Limitations
En C , les tableaux ne prennent pas en charge les constructeurs. Par conséquent, les membres du tableau sont initialisés par défaut avant toute initialisation d’objet. Par conséquent, il n'est pas possible d'initialiser les membres du tableau directement à l'aide des initialiseurs du constructeur.
Solution de contournement
La solution fournie dans la question consiste à utiliser une solution de contournement. Étant donné que les constructions STL comme std::vector ne sont pas disponibles, un constructeur par défaut est créé avec une méthode init() explicite pour l'initialisation post-construction. Cela évite complètement le besoin d'initialiseurs de constructeur.
Solution alternative
La réponse de Barry suggère une approche plus récente. Si l'environnement de développement prend en charge les normes C au-delà de C 98, une syntaxe plus récente est disponible :
struct Baz { Foo foo[3]{4, 5, 6}; };
Cette syntaxe permet l'initialisation des membres du tableau à l'aide d'accolades, éliminant ainsi le besoin d'un constructeur par défaut et d'une méthode d'initialisation explicite.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!