Souci de la forme: A *a = new B;
Voilà j'ai un petit problème avec les ligatures dynamiques:
Code:
1 2 3 4 5 6
|
MaBase* pBase[4][5]; //déclaration du tableau
pBase[0][0] = new MaBase(); //occurence de la classe de base
pBase[0][1] = new MaDerivee();//occurence de la classe dérivée |
Jusque là tout semble marcher mais en fait non car pBase[0][1] ne possède pas les attributs de MaDerivee.
De plus j'ai fait un test du genre :
Code:
1 2
|
MaDerivee *test = new MaDerivee();//occurence de la classe dérivée |
et test possède l'attribut de MaDerivee et seulement quelques uns de la classe de base.
Le problème doit être dans les constructeurs, je pense. Ils sont très simples pourtant.
Code:
1 2 3 4 5 6 7 8 9 10
|
MaBase::MaBase()
{
attribut1 = 0; //posséder par l'occurence test
attribut2 = 0;// pas posséder
attribut3 = "";//posséder
attribut4 = "";//pas posséder
for(int i = 0; i < 2; i++)
attribut5[i] = "";//posséder
} |
et
Code:
1 2 3 4 5
|
MaDerivee::MaDerivee():MaBase()
{
} |
sachant que MaDerivee et MaBase possède aussi des attributs de type: classe développée par moi.
problème: pBase[0][1] ne possede pas les arguments de la dérivée et les occurences de la dérivée n'ont pas accès à tous les attributs de la base