2017-09-17 3 views
3

Wenn ich mehr Klassen habe, wie kann ich testen, ob Instanz von einer Klasse abgeleitet ist?Wie testen, ob Qore-Objekt von einer bestimmten Klasse geerbt wird

class a { 
}; 
class b inherits a { 
}; 
class c inherits b { 
}; 


a B = new b(); 
a C = new c(); 
assert ((B is instance_of b) == (C is instance_of b)) 

hässliche Hack testet B.className == 'b' aber es ist falsch für 'C'. Ich kann keinen Operator finden.

Antwort

3

verwenden, um die instanceof Betreiber:

class A { 
} 
class B inherits A { 
} 
class C inherits B { 
} 

A a(); 
B b(); 
C c(); 

printf("%y %y %y\n", a instanceof B, b instanceof B, c instanceof C); 

druckt: False True True

(der obige Code auf dem Code basiert aber folgt Qore Standard naming conventions und auch auf Syntaxfehler korrigiert wurde)

+0

'printf ("% y% y% y \ n", eine Instanz von B, b Instanz von B, c Instanz von B) '' ist der Fall, den ich brauche. Es klappt! – TMa

Verwandte Themen