Maison >développement back-end >C++ >Comment initialiser des tableaux d'objets avec des constructeurs en C ?

Comment initialiser des tableaux d'objets avec des constructeurs en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-09 05:23:02802parcourir

How to Initialize Arrays of Objects with Constructors in C  ?

C : Initialiseurs de constructeur pour les tableaux

En C, initialiser un tableau d'objets peut être un défi. Pour les scénarios sans tableau, on peut utiliser la syntaxe du constructeur comme suit :

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

struct Bar {
    Foo foo;

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

Cependant, le problème se pose lorsqu'il s'agit de tableaux :

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

struct Baz {
    Foo foo[3];

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

Malheureusement, en C (avant plus itérations récentes du langage), il n'existe pas de méthode simple pour initialiser les membres d'un tableau à l'aide de constructeurs. La limitation provient de l'exigence de constructeurs par défaut pour les membres du tableau, qui sont automatiquement invoqués lors de l'initialisation du tableau. Ensuite, toute initialisation supplémentaire au sein du constructeur se poursuit. Pour les systèmes embarqués dépourvus de fonctionnalités STL, une solution de contournement implique un constructeur par défaut ainsi qu'une méthode init() explicite appelable après la construction, évitant ainsi le besoin d'initialiseurs.

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