mutable array of immutable objects

Anonymouse via Digitalmars-d digitalmars-d at puremagic.com
Tue Apr 19 04:43:22 PDT 2016


On Tuesday, 19 April 2016 at 10:41:05 UTC, Jeff Thompson wrote:
> I want to create a mutable array of immutable objects, but the 
> code below gives the error shown below. It seems that "new 
> immutable(C)[1]" makes the entire array immutable, but it seems 
> I should be able to change the elements of an array of pointers 
> to an object even though the objects are immutable. How to do 
> that?
>
> class C {
>   this(int x) immutable { this.x = x; }
>   int x;
> }
>
> void main(string[] args)
> {
>   auto array = new immutable(C)[1];
>   array[0] = new immutable C(10); // Error: Cannot modify 
> immutable expression array[0].
> }

Mind that this is akin to declaring a string (immutable(char)[]) 
and trying to modify an element.

You can append, though. Or rather, make a new array/slice with 
the new elements concatenated into it.


More information about the Digitalmars-d mailing list