Thread overview
cast problem about alias this
Jan 29, 2018
Sobaya
Jan 29, 2018
Sobaya
January 29, 2018
class Parent {
    int x;
    alias x this;
}

class Child : Parent {
}

void main() {
    Parent p = new Child;
    Child c = cast(Child)p; // cannot cast `int` to `Child`
}

In this code, I got a compile error.
How can I cast p to Child?
January 29, 2018
On 1/29/18 2:40 PM, Sobaya wrote:
> class Parent {
>      int x;
>      alias x this;
> }
> 
> class Child : Parent {
> }
> 
> void main() {
>      Parent p = new Child;
>      Child c = cast(Child)p; // cannot cast `int` to `Child`
> }
> 
> In this code, I got a compile error.
> How can I cast p to Child?

I'm sure I've seen this bug reported somewhere before. Ah yes: https://issues.dlang.org/show_bug.cgi?id=6777

What you can do is cast to Object first.

-Steve
January 29, 2018
On Monday, 29 January 2018 at 19:59:31 UTC, Steven Schveighoffer wrote:
> On 1/29/18 2:40 PM, Sobaya wrote:
>> class Parent {
>>      int x;
>>      alias x this;
>> }
>> 
>> class Child : Parent {
>> }
>> 
>> void main() {
>>      Parent p = new Child;
>>      Child c = cast(Child)p; // cannot cast `int` to `Child`
>> }
>> 
>> In this code, I got a compile error.
>> How can I cast p to Child?
>
> I'm sure I've seen this bug reported somewhere before. Ah yes: https://issues.dlang.org/show_bug.cgi?id=6777
>
> What you can do is cast to Object first.
>
> -Steve

I see.

I will continue by casting to Object for now.
Hope the bug is fixed soon.
Thanks!
 - Sobaya