May 08, 2008 Re: rtti cast | ||||
|---|---|---|---|---|
| ||||
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 Re: rtti cast | ||||
|---|---|---|---|---|
| ||||
Posted in reply to terranium | 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");
}
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply