OVH Cloud OVH Cloud

Classe et construteur de tableaux

1 réponse
Avatar
Snoopy
Hello,

Une petite question pour savoir comment on initialise un tableau dans un co=
nstructeur :


// Soit une classe de fou :

class A {
A(int i, int j) {}
};

// Pour d=E9clarer un objet A, je doit utiliser le seul Ctor propos=E9 :

A a(3, 2);

// Si je veux un tableau de A, =E7a se corse :

A a[2] =3D { A(3, 2), A(3, 2) };


//maintenant, je veut une classe B, qui contient un tableau de A :
class B {

A a[2];

B();

};


//Comment j'=E9crit le CTor de B ?
B::B() : a ( A(3, 2), A(3, 2) ) { } //compile pas....
B::B() : a { A(3, 2), A(3, 2) } { } //compile pas....
B::B() : a=3D{ A(3, 2), A(3, 2) } { } //compile pas....


Merci

sn00py

1 réponse

Avatar
Michel Michaud
Dans news:,
class A {
A(int i, int j) {}
};

// Pour déclarer un objet A, je doit utiliser le seul Ctor proposé :
A a(3, 2);

// Si je veux un tableau de A, ça se corse :
A a[2] = { A(3, 2), A(3, 2) };

//maintenant, je veut une classe B, qui contient un tableau de A :
class B {
A a[2];

B();
};

//Comment j'écrit le CTor de B ?
B::B() : a ( A(3, 2), A(3, 2) ) { } //compile pas....
B::B() : a { A(3, 2), A(3, 2) } { } //compile pas....
B::B() : a={ A(3, 2), A(3, 2) } { } //compile pas....


Malheureusement (?), il n'y a pas de syntaxe pour le faire
dans la liste d'initialisation. Tu dois le faire dans le code
du constructeur, ce qui n'est possible que pour un tableau
non const (ton cas ici). L'autre possibilité est de mettre
le tableau ailleurs et d'y faire simplement référence d'une
manière ou d'une autre dans ta classe, en particulier en le
recopiant dans un std::vector.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/