no property 'opCall' for type ... what am I doing wrong?
Chad J
gamerChad at _spamIsBad_gmail.com
Fri May 4 19:25:53 PDT 2007
Myron Alexander wrote:
> 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.
Ah, makes sense. I figured out what I was doing wrong in the original
code. Thanks.
More information about the Digitalmars-d-learn
mailing list