Classes héritées : modification de fonctionnement en 15 (e t 14) depuis windev 12

Le
smrhp
Bonjour,

Une question pour un problème que je rencontre suite à une migration=
de =

windev 12 à windev 15. J'ai rencontré pas mal de soucis avec les cla=
sses =

héritées, surtout au travers de composant mais qui arrivent pour une=
bonne =

partie à se solution par l'option "contexte d'exécution global" plut=
ôt =

"isolé".
Cependant, il me reste un gros problème que je n'arrive pas à soluti=
onner =

: c'est de pouvoir récupérer dans l'instance d'une superclasse les i=
nfos =

qui lui sont propres depuis une de ses sous-classes.
Exemple :
Soit une superclasse CAnimal dans un composant CP1 et une sous-classe =

CChien dans un composant CP2 (qui utilise CP1).
Dans un projet P1 qui possède les 2 composants CP1 et CP2, j'ai une =

instance MonChien de CChien et je souhaite copier dans une classe =

MonAnimal les infos issues de CAnimal depuis MonChien. Cela fonctionnait=
=

très bien en windev 12 simplement avec cette syntaxe :

MonChien est un CChien
MonAnimal est un CAnimal

MonAnimal = MonChien

(je simplifie un peu car la déclaration de l'un est faite dans le proj=
et =

P1 et le transfert se déroule dans le composant CP1)

En windev 15 pas moyen, même en essayant les nouvelles syntaxes : <==

Je précise que je souhaite bien une copie et pas une prise d'adresse (=
<-) =

qui elle fonctionne encore.

J'ai testé un code en PHP qui sera peut-être plus simple pour faire =
=

comprendre ce que je souhaite :

<?php

class CTest1 {
var $nom;
}

class CTest2 extends CTest1 {
var $prénom;
}

$MaC1 = new CTest1;
$MaC2 = new CTest2;

$MaC1->nom = "nom";
$MaC2->nom = "nomc2";

echo $MaC1->nom . "<br>";
$MaC1 = $MaC2;
echo $MaC1->nom;
?>

Ce code parvient bien à me copier l'info issue de la superclasse depui=
s =

l'instance $MaC2 dans l'instance $MaC1.

Bref, je veux faire exactement ça, mais en windev. Comment faire ?

Merci.

smrhp
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
STASZEWSKI André
Le #21619121
Bonsoir,

En faisant comme ça, ça donne quoi ?
MonAnimal = CChien.MonChien

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu et Cut Data Radars sur
http://pagesperso-orange.fr/mdev/
Pour me contacter, cliquez ici :
http://cerbermail.com/?ao2cTfCupx


"smrhp"

Bonjour,

Une question pour un problème que je rencontre suite à une migration de
windev 12 à windev 15. J'ai rencontré pas mal de soucis avec les classes
héritées, surtout au travers de composant mais qui arrivent pour une bonne
partie à se solution par l'option "contexte d'exécution global" plutôt
"isolé".
Cependant, il me reste un gros problème que je n'arrive pas à solutionner
: c'est de pouvoir récupérer dans l'instance d'une superclasse les infos
qui lui sont propres depuis une de ses sous-classes.
Exemple :
Soit une superclasse CAnimal dans un composant CP1 et une sous-classe
CChien dans un composant CP2 (qui utilise CP1).
Dans un projet P1 qui possède les 2 composants CP1 et CP2, j'ai une
instance MonChien de CChien et je souhaite copier dans une classe
MonAnimal les infos issues de CAnimal depuis MonChien. Cela fonctionnait
très bien en windev 12 simplement avec cette syntaxe :

MonChien est un CChien
MonAnimal est un CAnimal

MonAnimal = MonChien

(je simplifie un peu car la déclaration de l'un est faite dans le projet
P1 et le transfert se déroule dans le composant CP1)

En windev 15 pas moyen, même en essayant les nouvelles syntaxes : < Je précise que je souhaite bien une copie et pas une prise d'adresse (<-)
qui elle fonctionne encore.

J'ai testé un code en PHP qui sera peut-être plus simple pour faire
comprendre ce que je souhaite :

<?php

class CTest1 {
var $nom;
}

class CTest2 extends CTest1 {
var $prénom;
}

$MaC1 = new CTest1;
$MaC2 = new CTest2;

$MaC1->nom = "nom";
$MaC2->nom = "nomc2";

echo $MaC1->nom . "<br>";
$MaC1 = $MaC2;
echo $MaC1->nom;
?>

Ce code parvient bien à me copier l'info issue de la superclasse depuis
l'instance $MaC2 dans l'instance $MaC1.

Bref, je veux faire exactement ça, mais en windev. Comment faire ?

Merci.

smrhp
smrhp
Le #21631081
Bonjour,

Merci de te pencher sur mon problème ;)

Le Sat, 24 Apr 2010 02:16:44 +0300, STASZEWSKI André

Bonsoir,

En faisant comme ça, ça donne quoi ?
MonAnimal = CChien.MonChien



une erreur de compilation. Suite à ta suggestion j'ai aussi tenté :
MonAnimal = CChien.MonAnimal (c'est plutôt dans ce sens que ça m'i ntéresse)
et aussi :
MonAnimal = MonAnimal.CChien (qui ne se met pas en erreur de compilati on
mais qui plante lamentablement quand même :'(

D'autres idées ? Pour l'instant étant coincé je me suis fait une
"Get_CSuperClasse" qui recopie un à un les membres issus de la classe
dérivée dans une instance "Temp" de type SuperClasse pour la renvoye r,
mais c'est franchement pas satisfaisant...

Merci.

--
smrhp
Publicité
Poster une réponse
Anonyme