no property 'opCall' for type ... what am I doing wrong?
Myron Alexander
dprogramming at myronRMVETHISalexander.com
Fri May 4 18:50:44 PDT 2007
Chad J wrote:
> main.d:
> import std.stdio;
>
> struct A
> {
> int member1;
> }
>
> struct B
> {
> int member2;
> }
>
> void main()
> {
> A a;
> writefln( (cast(B)a).member2 );
> }
>
> That code results in the following compiletime errors:
> main.d(16): Error: no property 'opCall' for type 'B'
> main.d(16): Error: function expected before (), not 1 of type int
> main.d(16): Error: no property 'member2' for type 'int'
>
> I am using DMD 1.014 on Windows.
> This seemed to work at some point in history, but not anymore. What am
> I doing wrong?
>
> Thanks
Chad,
What you are doing there is illegal code. The structs A and B are
distinct types and cannot be cast to each other. If it worked in the
past, then it was probably a compiler bug.
Since structs do not allow for inheritance (they are value types), then
the only way would be to use classes and inheritance or templates.
What are you trying to achieve? Perhaps I can try to suggest a different
method.
Regards,
Myron.
More information about the Digitalmars-d-learn
mailing list