Maison > développement back-end > C++ > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-06 19:08:02
original
847 Les gens l'ont consulté

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) {}
};
Copier après la connexion

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) {}
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!