digitalmars.D.learn - Alias this and inheritance
- Aurelien Fredouelle (23/23) Nov 05 2017 The following code does not compile:
- ag0aep6g (5/25) Nov 05 2017 Known issue: https://issues.dlang.org/show_bug.cgi?id=6777
The following code does not compile:
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?
Thanks,
Aurelien
Nov 05 2017
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;
Nov 05 2017








ag0aep6g <anonymous example.com>