Insert array into an AA

Steven Schveighoffer schveiguy at yahoo.com
Tue Aug 16 12:47:59 PDT 2011


On Tue, 16 Aug 2011 15:17:33 -0400, nrgyzer <nrgyzer at gmail.com> wrote:

> Hi everyone,
>
> I've the following:
>
> private static ubyte[][2][hash_t] classInstances;
>
> this() {
>
>    classInstances[toHash()] = new ubyte[2]; // does not work
>
> }
>
> I want insert every class instance into the hashmap. Every class
> instance should be contained in the map after the constructor was
> called. When I compile my code, I get "Error: cannot implicitly
> convert expression (new ubyte[](2u)) of type ubyte[] to ubyte[][]"
> which is logical. But is there any way to insert every instance into
> the array and define the array/map for this entry?

It's inadvisable to do this, unless you plan on manually deleting the  
instances.

The reason is because the hash will maintain a pointer to every class  
instance, which means the GC will never collect them.

Also, it's hard to know why you selected that type, but changing  
classInstances to ubyte[][hash_t] should work.

Also, you don't need hash_t, you should be able to do ubyte[][Object]  
classInstances.

then add like:

classInstances[this] = new ubyte[2];

The call to toHash is implicit.

-Steve


More information about the Digitalmars-d-learn mailing list