immutable array in constructor
Jeff Thompson via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Mar 17 03:11:43 PDT 2016
On Thursday, 17 March 2016 at 10:04:53 UTC, Anonymouse wrote:
> On Thursday, 17 March 2016 at 09:57:37 UTC, Jeff Thompson wrote:
>> In the following code, I explicitly declare array as
>> immutable. But it compiles with the error shown below in the
>> comment. The array object is declared immutable, so how can
>> the compiler say it is a mutable object? In summary, how to
>> pass an immutable array to an immutable constructor?
>>
>> class C {
>> int i;
>> this(immutable int[] array) immutable {
>> i = array[0];
>> }
>> }
>>
>> void func() {
>> immutable int[] array = [1];
>> auto c = new C(array); // Error: immutable method C.this is
>> not callable using a mutable object
>> }
>
> The error message isn't very good, but remove immutable from
> the constructor and it works.
>> this(immutable int[] array) {
This is a simplified example from a larger class I have where I
need an immutable constructor. This is because I need to
construct an object an pass it to other functions which take an
immutable object. So, how to keep an immutable constructor?
More information about the Digitalmars-d-learn
mailing list