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
Libérer: 2024-11-29 02:07:08
original
521 Les gens l'ont consulté

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

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

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

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!

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