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

Comment initialiser des tableaux de membres avec des listes d'initialisation en C 0x ?

Mary-Kate Olsen
Libérer: 2024-11-02 17:25:29
original
793 Les gens l'ont consulté

How to Initialize Member Arrays with Initializer Lists in C  0x?

Initialisation de tableaux de membres avec des listes d'initialisation

En C 0x, vous pouvez rencontrer l'erreur « types incompatibles dans l'affectation » lorsque vous tentez d'initialiser un tableau de membres avec une liste d'initialisation .

Pour résoudre ce problème, envisagez plutôt d'utiliser un constructeur de modèle variadique :

<code class="cpp">struct foo {
    int x[2];
    template <typename... T>
    foo(T... ts) : x{ts...} {}
};

int main() {
    // Usage
    foo f1(1, 2);   // OK
    foo f2{1, 2};   // Also OK
    foo f3(42);    // OK; x[1] zero-initialized
    foo f4(1, 2, 3); // Error: too many initializers
    foo f5(3.14);  // Error: narrowing conversion not allowed
    foo f6("foo"); // Error: no conversion from const char* to int
}</code>
Copier après la connexion

Si la préservation du statut « const » n'est pas essentielle, vous pouvez également utiliser une fonction pour charger les valeurs du tableau. :

<code class="cpp">struct foo {
    int x[2];
    foo(std::initializer_list<int> il) {
        std::copy(il.begin(), il.end(), x);
    }
};</code>
Copier après la connexion

Cependant, cette approche renonce à la vérification des limites au moment de la compilation.

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