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

Comment initialiser des tableaux d'objets C dans un environnement embarqué ?

Barbara Streisand
Libérer: 2024-11-06 17:21:03
original
987 Les gens l'ont consulté

How to Initialize C   Arrays of Objects in an Embedded Environment?

Initialisation du constructeur pour les tableaux C

L'initialisation de tableaux d'objets en C peut être difficile en raison de l'absence d'une syntaxe d'initialisation de tableau similaire à celle-là disponible pour les objets non-tableaux.

Considérez les objets non-tableaux suivants exemple :

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

struct Bar {
    Foo foo;

    Bar() : foo(4) {}
};
Copier après la connexion

Dans cet exemple, le constructeur Bar initialise l'objet membre foo en utilisant la syntaxe d'initialisation : foo(4).

Cependant, pour les tableaux, la situation est différente. La syntaxe suivante est incorrecte :

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

struct Baz {
    Foo foo[3];

    // ??? I know the following syntax is wrong, but what's correct?
    Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
Copier après la connexion

Solution

Malheureusement, dans le contexte du C 98 (ce qui semble être le cas ici comme le suggère le processeur embarqué limitation), il n'existe aucun moyen de réaliser l'initialisation des membres du tableau à l'aide des initialiseurs de constructeur. La solution de contournement consiste à fournir un constructeur par défaut pour les membres du tableau et à effectuer toute initialisation nécessaire à l'intérieur du constructeur.

Par exemple :

struct Foo {
    Foo() : value(0) { /* ... */ }  // Default constructor with a default value

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

struct Baz {
    Foo foo[3];

    Baz() {
        foo[0] = Foo(4);
        foo[1] = Foo(5);
        foo[2] = Foo(6);
    }
};
Copier après la connexion

Bien que cette approche ne soit pas aussi élégante que l'initialisation directe, elle permet de créer et d'initialiser des tableaux d'objets sans recourir à des méthodes d'initialisation externes ou à des constructions STL qui peuvent ne pas être disponibles dans les environnements embarqués.

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!