www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: rtti cast

reply terranium <spam here.lot> writes:
BCS Wrote:

 The point is that offtent a failed cast is not an indecation of an 
 error. For instance code like this
 
 class A {}
 class B1 : A {}
 class B2 : A {}
 
 void foo(A a)
 {
    if(auto b = cast(B1)a) {}
    else if(auto b = cast(B2)a) {}
    else {}
 }

I see polimorphism should help here.
May 08 2008
parent BCS <ao pathlink.com> writes:
Reply to terranium,

 BCS Wrote:
 
 The point is that offtent a failed cast is not an indecation of an
 error. For instance code like this
 
 class A {}
 class B1 : A {}
 class B2 : A {}
 void foo(A a)
 {
 if(auto b = cast(B1)a) {}
 else if(auto b = cast(B2)a) {}
 else {}
 }


dosn't always work module third.party.lib; class A {} module my.lib.one class B1 : A { int newFn(){...}} module my.lib.teo class B2 : A { char somthingNew(char[] c){...}} void foo(A a) { if(auto b = cast(B1)a) b.newFn(); else if(auto b = cast(B2)a) b.somthingNew("hello"); else throw new Error("a isn't a B1 or B2"); }
May 08 2008