OVH Cloud OVH Cloud

Héritage

3 réponses
Avatar
GDF
Bonjour,

Je débute avec windev et je rencontre un problème :

Je crée une classe cAncetre.
Je crée une classe cHerite, qui hérite de cAncetre.

Lorsque je crée ensuite un objet cHerite, tout se passe bien sauf si ma
classe cAncetre a un constructeur.
En traçant le programme, je me suis rendu compte que le plantage intervenait
au moment de l'appel (automatique) au constructeur de cAncetre, et avant
toute exécution du code de ce constructeur. (Même si le code est uniquement
"i est un entier", ca plante).

Je peux contourner le problème en mettant mon code dans une méthode au lieu
du constructeur (enfin je suppose) mais ce n'est pas tres clean.

Quelqu'un a une explication ?

Merci.

PS : Windev 7.5

3 réponses

Avatar
ted
"GDF" écrivait news:cm88ho$dt2$1
@apollon.grec.isp.9tel.net:

ca plante



Salut,

Que veut dire "ça plante"

En cas d'héritage il faut que le constructeur de la calsse qui hérite
cHérite appel en premier instruction le constucteur de la classe ancêtre
(cAncetre) :

//Constrcuteur de cHérite
PROCEDURE Constructeur(Parametre)
Ancetre:Constructeur(Parametre) //Ancetre étant un mot clé

--
En esperant t'avoir aidé.
ted
Avatar
mat
ted wrote:
"GDF" écrivait news:cm88ho$dt2$1
@apollon.grec.isp.9tel.net:


ca plante




Salut,

Que veut dire "ça plante"

En cas d'héritage il faut que le constructeur de la calsse qui hérite
cHérite appel en premier instruction le constucteur de la classe ancêtre
(cAncetre) :

//Constrcuteur de cHérite
PROCEDURE Constructeur(Parametre)
Ancetre:Constructeur(Parametre) //Ancetre étant un mot clé




Chez nous, l'héritage se fait dans la Declaration

un objet cAncêtre
ou hérite de cAncêtre

ce qui appelle automatiquement le constructeur de la classe ancêtre.
Avons nous malcompris quelque chose toutes ces années?
Avatar
ted
mat écrivait news:418c0bd3$1_3
@news.bluewin.ch:

Chez nous, l'h‚ritage se fait dans la Declaration

un objet cAncˆtre
ou h‚rite de cAncˆtre

ce qui appelle automatiquement le constructeur de la classe ancˆtre.
Avons nous malcompris quelque chose toutes ces ann‚es?



Salut,

Sans vouloir te vexer, je crois que oui.
Enfin je pense que vous avez mal compris une petite partie :
L'héritage se fait bien par le code de déclarartion mais l'initialisation
se fait par le constructeur dans le cas des clases dérivées comme dans
les classes "simples".

Le constructeur n'est pas appellé dans le code de déclaration. Le code de
déclarartion n'est sensé n'avoir que des déclaration pas de code.
D'ailleur dans une classe on ne peut pas affecté une valeur par défaut à
un membre. Il faut l'affecter dans le constructeur.

Dans ce cas c'est la même chose. Comment passer un paramètre à la classe
ancêtre dans le code des déclarations, puisque la classe dérivée n'a elle
même pas encore exécuter so propre constructeur ? Et dans ce cas encore
comment passer un paramètre que l'on a pas encore reçu ? etc....

Note : Tu n'as toujours pas donné ton message d'erreur

--
En esperant t'avoir aidé.
ted