alias this & cast

Daniel Kozak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Sep 11 04:53:14 PDT 2014


V Thu, 11 Sep 2014 11:40:05 +0000
andre via Digitalmars-d-learn <digitalmars-d-learn at puremagic.com>
napsáno:

> Hi,
> 
> I am 80% sure, the failing assertion is correct but please have a 
> look.

No it is not

assert(cast(A)cast(C)b); // this is OK

b is B so it does not know about having alias to A;

> Second assertion fails.
> 
> Kind regards
> André
> 
> class A{}
> 
> class B{}
> 
> class C : B
> {
> 	A a;
> 	alias a this;
> 	
> 	this()
> 	{
> 		a = new A();
> 	}
> }
> 
> void main()
> {
> 	B b = new C();
> 
> 	// OK
> 	assert(cast(C)b);
> 	
> 	// fails
> 	assert(cast(A)b);	
> }




More information about the Digitalmars-d-learn mailing list