www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - cast problem about alias this

reply Sobaya <sobaya007 gmail.com> writes:
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?
Jan 29 2018
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
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
Jan 29 2018
parent Sobaya <sobaya007 gmail.com> writes:
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
Jan 29 2018