On Sunday, 5 November 2017 at 07:07:43 UTC, Aurelien Fredouelle wrote:
struct S { }

class A
{
  S s;
  alias s this;
}

class B : A
{
}

void main()
{
  A asA = new B;
  B asB = cast(B)asA;
}

I would expect the last line to successfully cast the B instance I created back into type B, however this seems to be preempted by the alias this:

Error: cannot cast expression asA.s of type S to app.B

Is there a way to force this cast to operate on the object of type A instead of automatically using A.s?

Known issue: https://issues.dlang.org/show_bug.cgi?id=6777

You can work around by casting to Object first:

    B asB = cast(B) cast(Object) asA;

  • Alias this and inheritance Aurelien Fredouelle via Digitalmars-d-learn
    • Re: Alias this and inheri... ag0aep6g via Digitalmars-d-learn

Reply via email to