3 votes

Initialiser une variable de type struct dérivée en temps de compilation en c++

J'ai les structures suivantes :

struct B
{
   int a;
   int b;
};

struct D: public B
{
   int c;
};

Je veux initialiser certaines variables de la structure D au moment de la compilation, comme si j'initialisais la structure B, cela ressemblerait à :

B b1 = { value_of_a, value_of_b };

J'ai essayé de le faire de la manière suivante, mais cela n'a pas fonctionné :

D d1 = { { value_of_a, value_of_b } , value_of_c };
D d2 = { value_of_a, value_of_b , value_of_c };

Si je change la structure en :

struct D
{
   B bb;
   int c;
};

il se compile avec l'initialisation "d1" et "d2".

La question est donc de savoir comment initialiser la structure dérivée. Et s'il n'y a pas de règle pour l'initialisation des structures dérivées, quelles en sont les raisons ?

Nous vous remercions.

1voto

Stuart Golodetz Points 12679

Votre D qui découle de B n'est pas un agrégat (parce qu'il a une classe de base), vous ne pouvez donc pas l'initialiser en utilisant la syntaxe d'initialisation des agrégats. Vous devez utiliser un constructeur et une liste d'initialisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X