Je dispose d'un objet 'o := A new' qui évolue dans le système et devient à un moment de sa vie de type B.
La classe B étant une classe fille de A. J'ai donc trouvé l'astuce suivante : créer une fonction 'asB' dans la classe A.
Mais j'ai le problème suivant, par exemple :
o1 := A new. "o1 est du type A"
o2 := o1.
o1 var: 'val'
Ici 'o1' et 'o2' sont modifié ensemble, c'est ce que je veux.
(c'est à dire que en modifiant 'o1', je modifie également 'o2')
Par contre, dès que je spécialise l'un des deux objet, je perd cette propriété.
o2 := o1 asB. "o2 se spécialise et devient du type B"
o1 var: 'autreval'
Ici la variable d'instance 'var' de o2 n'est pas mise-à-jour. En fait, 'o1' contient une ancienne version de 'o2'. Je voudrais que toute les références à cet objet se spécialisent ensemble, sans devoir les synchroniser toutes.
Le problème doit certainement venir de ma fonction 'asB' qui crée une nouvelle instance de B et copie les variables d'instances communes, puis renvoit cette instance.
Comment feriez-vous une fonction 'asB' qui 'fonctionne' ou bien auriez vous une autre façon de procéder ?
Message édité par mexx20 le 01-12-2005 à 18:19:38