On Sunday, 13 November 2022 at 16:11:17 UTC, matheus. wrote:
[...]

You should add the code below after "auto B = A.dup;":

   B[0].Txt = A[0].Txt.dup;

The "Txt" property inside B is still referencing A without the above.

Matheus.

Thank you - your suggestion worked.

The slight generalisation shown at bottom also worked.

However, is there a way of avoiding the for-loop?
Things like
```
B[].Txt = A[].Txt.dup;
```
did not work for me.

```
void main() {

   import std.stdio;

   int index;
   struct test_struct {
      char[] Txt;
   }

   test_struct[] A;

   A.length = 2;
   A[0].Txt.length = 1;
   A[1].Txt.length = 1;

   A[0].Txt[0] = 'W';
   A[1].Txt[0] = 'X';

   writeln(A);

   auto B = A.dup;
   for (index = 0; index < A.length; index = index + 1) {
      B[index].Txt = A[index].Txt.dup;
   }

   writeln(A, B);

   A[0].Txt[0] = 'Y';
   A[1].Txt[0] = 'Z';

   writeln(A, B);
}
```

Reply via email to