The Status of Const

Graham St Jack Graham.StJack at internode.on.net
Fri Aug 13 16:42:09 PDT 2010


On 14/08/10 05:55, Walter Bright wrote:
> Graham St Jack wrote:
>> For me, the key problem is that a class object reference has the same
>> const/immutable/shared attribute as the object on the heap that it
>> refers to. This is sometimes what you need, but more often you want a
>> non-shared, mutable reference to a const/immutable/shared object.
>
> I struggled with this for a long while before I eventually came to the
> conclusion that I was thinking about class objects as a reference and
> the instance, and that those two were separable concepts. They are not.
> A reference type is implicitly treated like a value type as far as
> accessing its members go. Trying to separate out the two is a
> fundamental misunderstanding of what reference types are all about.
> Semantically, they are much more than just a pointer to the instance.
>
>
>> You can achieve this with pointers for arrays, structs and primitive
>> types, but not with classes because a class pointer is just a pointer
>> to a reference.
>
> The way to do it with class is take a pointer to the class:
>
> class C { ... }
>
> const(C)*[]; // array of pointers to const classes
>
> just like you'd do with a struct.

I get it - I think. I will give this a try and see how it works in practice.

-- 
Graham St Jack


More information about the Digitalmars-d mailing list