Andrey:

Could anyone please explain to me, why do I have error message on this piece of code?

In this thread you are doing some mistakes. This code seems OK:

alias TData = short;
alias TArray = TData[100];

struct MyStruct {
    TArray* arrPtr;
}

void main() {
    MyStruct* t3 = new MyStruct(new TArray[1].ptr);
    TData data0 = (*t3.arrPtr)[99];
}


D is working as designed. (The only small problem is that you can't "new" a fixed size array, so I have had to allocate a dynamic array of TArray of length 1 and take the pointer to its first item. Another alternative solution is to wrap TArray into a struct.)

Such kind of code is possible in D, but it should be quite uncommon in library code (and it can't be marked safe). There are usually simpler ways to do similar things in D. So perhaps there are ways to simplify your data structure (here I have kept the same structure you have used in the example).

Bye,
bearophile

Reply via email to