Maison >développement back-end >C++ >Comment initialiser un tableau d'objets dans un constructeur C ?

Comment initialiser un tableau d'objets dans un constructeur C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-06 19:08:02932parcourir

How can you initialize an array of objects within a C   constructor?

Initialisation du constructeur de tableau C

L'initialisation d'un tableau d'objets en C peut être difficile, en particulier par rapport aux exemples sans tableau. Considérez l'initialisation non-tableau suivante :

struct Foo { Foo(int x) { /* ... */  } };

struct Bar {
     Foo foo;

     Bar() : foo(4) {}
};

Dans cet exemple, l'objet Foo dans la structure Bar est correctement initialisé à l'aide de la liste d'initialisation du constructeur. Cependant, l'initialisation d'un tableau d'objets nécessite une approche différente.

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

     Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

La syntaxe incorrecte présentée dans l'exemple ci-dessus met en évidence le défi de l'initialisation des éléments du tableau individuellement.

Solution

Malheureusement, selon la réponse fournie, il n'existe aucun moyen standard d'initialiser un tableau d'objets en C au sein du constructeur. Au lieu de cela, un constructeur par défaut doit être utilisé pour les membres du tableau, et toute initialisation nécessaire peut être effectuée après le temps de construction.

Cette limitation est attribuée aux contraintes du processeur intégré utilisé, qui ne prend pas en charge le C moderne. normes. Pour contourner le problème, l'auteur suggère de créer un constructeur par défaut et une méthode init() explicite pour effectuer l'initialisation après la construction. Bien que cette approche ne soit peut-être pas idéale, elle pallie le manque d'initialiseurs de constructeur pour les tableaux.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn