Bonjour

supposons les 4 classes suivantes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class A
{
private:
string n;
string p;
int a;
public:
A(string, string, int);
...
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
class B: virtual public A
{
private:
...
public:
B(string nn, string pp, int aa):A(nn, pp, aa){ //autres initialisations 
//sans passage d'arguments!!
}
..
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class c: virtual public A
{
private:
...
float z;
public:
C(string nn, string pp, string aa, float zz):A(nn, pp, aa) { //autres //initialisations avec et
//sans passage d'arguments!!
}
...
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class D: public B, public C
{
public:
D(string nn, string pp, string aa, string zz):
A(nn, pp, aa),
B(nn, pp, aa),
C(nn, pp, aa, zz)
....
};
bon jusqu'à la rien de méchant

Mais voici que je lis que
dans ce cas de figure il est inutile de préciser les informations pour A au niveau des constructeurs B et C..
..mais du coup, on déclare comment les constructeurs de B et de C?

Car si je déclare le constructeur de B de cette sorte:
B(){...};
alors je ne pourrais jamais créer d'objet B complet car pour cela j'ai besoin des données que B doit hériter de A

... et si je déclare B de cette sorte:
B(string nn, string pp, int a);

alors je suis obligé lors de la définition de faire figurer un :A(nn, pp, aa).

Alors ma question c'est: est ce qu'il est utile ou non de préciser les informations de la class Mère au niveau des constructeurs B et C?

Si non, alors comment faire pour déclarer / définir les constructeurs de B et de C en sorte qu'on puisse créer des objet B et C pouvant hériter de A .. mais sans pour autant préciser les informations pour A au niveau des constructeurs B et C