Initialisation des membres d'un tableau dans les listes d'initialisation des constructeurs
L'incapacité d'initialiser des tableaux dans les constructeurs à l'aide de listes d'initialisation de membres soulève des questions concernant les règles sous-jacentes et les possibles solutions.
C 03 Standard et Granulat Initialisation
La norme C 03 interdit l'utilisation de l'initialisation directe pour les types d'agrégats, y compris les tableaux, dans les listes d'initialisation de membres. L'initialisation directe fait référence à l'utilisation du constructeur directement avec des parenthèses, comme le montrent les extraits de code fournis.
Boost::array comme solution
Une approche alternative consiste à utiliser une structure qui encapsule le tableau. En définissant un constructeur dans la structure, vous pouvez initialiser le tableau lors de la création de l'objet. Ceci est similaire à l'approche adoptée par la bibliothèque Boost::array.
Initialisation de liste C 11
C 11 a introduit l'initialisation de liste, qui permet l'initialisation directe des agrégats. , y compris les tableaux, dans les listes d'initialisation de membres. Cependant, la syntaxe mentionnée dans la question est incorrecte. Pour utiliser l'initialisation de liste, vous devez mettre les éléments du tableau entre accolades :
class C { public: C() : arr{1, 2, 3} {} };
Cette syntaxe initialise correctement le tableau arr dans le constructeur.
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!