PDA

Volledige versie bekijken : Object referenties problematisch


Laiverd
%Europe/Berlin %574 %2007, 13:47
Ik wil een object van ClassA_instance laten verwijzen naar een object van ClassB_instance, maar dat werkt op een of andere manier niet. Wat ik heb:

ClassA {
private var _propa:Object;
private var b_instance:ClassB;
function ClassA(){
b_instance = new ClassB();
}
public function set propa(o:Object){
_propa = o;
}
}
ClassB {
private var _propb:Object;
function ClassB(){
_propb = new Object();
_propb.plop = new Object();
}
public function get propb():Object{
return propb;
}
}
Vervolgens probeer ik propa te laten verwijzen naar propb.plop met
ClassA_instance.propa = ClassA_instance.ClassB_instance.propb.plop
Dat werkt dus niet:
trace("ClassA_instance.propa = " + ClassA_instance.propa); // undefined
trace("ClassA_instance.propa = " + ClassA_instance.ClassB_instance.propb.plop); // [Object object]Schiet mij maar lek. Waarom werkt deze manier van een referentie maken naar een object niet, en hoe het op te lossen?

Tnx,
John

P.s. Als ik
ClassA_instance.propa = "ClassA_instance.ClassB_instance.propb.plop"doe dan zou er volgens mij een type mismatch error moeten worden gegenereerd, maar dat gebeurt ook niet [?]

Laiverd
%Europe/Berlin %603 %2007, 14:28
Laat voorlopig maar even: het probleem lijkt inmiddels opgelost, maar vraag me niet waar het nou aan lag. Verhelderende inzichten over bovenstaande situatie blijven uiteraard welkom.

John

TheDutch
%Europe/Berlin %767 %2007, 18:25
Dat werkt dus niet:
trace("ClassA_instance.propa = " + ClassA_instance.propa); // undefined
trace("ClassA_instance.propa = " + ClassA_instance.ClassB_instance.propb.plop); // [Object object]
Je hebt geen "propa" getter functie ;).

Dauntless
%Europe/Berlin %768 %2007, 18:26
ClassA_instance.propa = ClassA_instance.ClassB_instance.propb.plop
Vanwaar eerst ClassA_instance.ClassB_instance ? Die bestaat toch helemaal niet?
In tegenstelling tot dit:
ClassA_instance.propa = ClassB_instance.propb.plop

//EDIT
Damn... Ik ben dus tóch niet altijd eerst :o ;) ;)

TheDutch
%Europe/Berlin %769 %2007, 18:28
ClassB_instance bestaat wel binnen ClassA_instance alleen de referentie naam heet niet ClassB_instance maar b_instance :P.

//EDIT: Maar b_instance is private dus zou het nog niet werken van buiten de functie.
//EDIT: Kortom je mist een getter functie en de referentie naar Class B moet waarschijnlijk public zijn.

ps. Het is altijd een race bij ons :D.

Laiverd
%Europe/Berlin %001 %2007, 00:02
Dat zou het kunnen zijn geweest. Damn wat kun je je soms helemaal blind staren op de simpelste dingen. Bedankt jongens.