Is this a bug?

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 28 02:12:59 PDT 2014


On Monday, 28 April 2014 at 08:58:41 UTC, Andrey wrote:
> Could anyone please explain to me, why do I have error message 
> on this piece of code?
>
> alias short Type1;
> alias Type1[100]* Type2; // pointer to an array
> struct Type3
> {
> 	Type2 f
> }
> void foo()
> {
>    Type3* b;
>    Type1  d;
>    d = b.f[10]; // compilation error: cannot implicitly convert 
> expression ((*b).f[10]) of type short[100] to short
>    d = b.f[0][10]; // ok
> }
>
> Thank you in advance

not a bug.

b.f[10] is indexing the pointer to the array, not the array 
itself.

b.f[0][10] is indexing the array (with the 10), but I would argue 
it is better to write *(b.f)[10] so as to be clear that f is not 
an array.

What is the reason you are using a pointer to a struct containing 
a pointer to a static array? It's often not necessary to work 
like that.


More information about the Digitalmars-d-learn mailing list