implimenting interface function by inheriting from other class

Alexey invalid at email.address
Sat Aug 21 23:31:58 UTC 2021


On Saturday, 21 August 2021 at 23:14:14 UTC, Alexey wrote:
>> I want `this` inside of C1::coolFunc to return C2 if called as 
>> C2::coolFunc
>
> so executing `cast(C2) this !is null` inside of C1::coolFunc 
> would work

If this would work, I'd farther used this like so
```D
interface Int
{
     void coolFunc();
}

class C1
{
     void coolFunc()
     {
         {
             auto obj = (cast(C1)(cast(Int) this));
             if (obj !is null)
             {
                 do_one_thing();
             }
         }
         {
             auto obj = (cast(C2)(cast(Int) this));
             if (obj !is null)
             {
                 do_another_thing();
             }
         }
         {
             auto obj = (cast(C3)(cast(Int) this));
             if (obj !is null)
             {
                 do_something_else();
             }
         }
         return;
     }
}

class C2 : C1, Int
{

}

class C3 : C1, Int
{

}

class C4 : C1, Int
{

}

void main()
{
     auto c = new C2;
     c.coolFunc();
}

```


More information about the Digitalmars-d-learn mailing list