Maison >développement back-end >C++ >Comment initialiser un membre d'un tableau dans une liste d'initialisation de membres ?

Comment initialiser un membre d'un tableau dans une liste d'initialisation de membres ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 02:07:08623parcourir

How to Initialize an Array Member in a Member Initializer List?

Comment initialiser un membre d'un tableau dans une liste d'initialisation de membres

Introduction

Initialisation d'un Un membre d'un tableau dans une liste d'initialisation de membres peut sembler une tâche simple, mais peut être difficile en pratique. Cet article explorera différentes approches et répondra aux questions courantes liées à ce sujet.

Problème et code

L'extrait de code suivant tente d'initialiser un membre du tableau dans l'initialiseur d'un constructeur. list :

class C {
public:
    C() : arr({1,2,3}) //doesn't compile
{}
private:
    int arr[3];
};

Cependant, le code ne parvient pas à se compiler. La raison en est que les tableaux ne peuvent être initialisés qu'à l'aide de l'opérateur d'affectation =, tel que :

int arr[3] = {1,3,4};

Solutions

  • Utiliser une structure :

Une solution consiste à utiliser une structure pour encapsuler le tableau, lui permettant d'être initialisé dans le constructeur. C'est essentiellement ce que fait la bibliothèque Boost.Array.

  • Utiliser l'initialisation de liste :

C 11 introduit l'initialisation de liste, qui peut être utilisée pour initialiser un tableau dans une liste d'initialisation de membres. Le code suivant fonctionnerait :

class C {
public:
    C() : arr{1, 2, 3} { }
private:
    int arr[3];
};

C 03

La norme C 03 ne traite pas spécifiquement de l'initialisation des agrégats (y compris les tableaux) dans les initialiseurs de constructeur. L'invalidité du code original est une conséquence des règles d'initialisation directe, qui interdisent l'utilisation de listes d'initialisation pour les tableaux.

C 11

Initialisation de la liste de C 11 La syntaxe simplifie l'initialisation des tableaux dans les listes d'initialisation de membres. Cependant, il est important d'utiliser la syntaxe correcte, comme indiqué ci-dessus.

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