www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How do you check if object o has base type B?

reply Enjoys Math <enjoysmath gmail.com> writes:
Consider:

class C {

}

class B : C {

}

class A : B {

}

class D : C {

}

C[] objList;

how do we test if objLis[k] is of base type "B"?

Ie for [new A(), new B(), new D(), new C()] would give output 
[true, true, false, false].

?

Thank you! :D
Feb 03 2016
next sibling parent Rikki Cattermole <alphaglosined gmail.com> writes:
T[] list;

foreach(v; list) {
	if (SpecialT v2 = cast(SpecialT)v) {
		writeln(v2);
	} else {
		writeln("err");
	}
}

That should work.
Feb 03 2016
prev sibling parent Gary Willoughby <dev nomad.so> writes:
On Thursday, 4 February 2016 at 05:51:22 UTC, Enjoys Math wrote:
 Consider:

 class C {

 }

 class B : C {

 }

 class A : B {

 }

 class D : C {

 }

 C[] objList;

 how do we test if objLis[k] is of base type "B"?

 Ie for [new A(), new B(), new D(), new C()] would give output 
 [true, true, false, false].

 ?

 Thank you! :D
if (cast(B)objLis[k]) { // It's an instance. }
Feb 04 2016