rtti cast

BCS ao at pathlink.com
Thu May 8 09:57:56 PDT 2008


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 {}
>> }
> I see polimorphism should help here.
> 

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");
}





More information about the Digitalmars-d mailing list