On Wednesday, 18 June 2014 at 02:00:37 UTC, Justin Whear wrote:
On Wed, 18 Jun 2014 01:31:32 +0000, Sebastian Unger wrote:

Hi there,

I'm an experient C++ developer and am trying to switch to / learn D. What I've seen so far is mostly quite straight forward and VERY nice.

There's only one catch so far for me for which Googling has only found
the discouraging answer of: It can't be done in D.

I have two classes A and B. Each object of class A is associated with a particular object of class B. This association is not supposed to change
throughout the lifetime of the object of A.

How am I supposed to express this in D, given that D's const is too strong for this? I don't need any guarantees from the const that can be used for thread safety or parallelisation. All I need is the compiler not letting me change the reference to the B object inside the A object.

Does D have some way of expressing this?

Or has D really done away with the MOST important use case of const
(preventing developer mistakes! Not optimization.)

Cheers,
Seb

I think you may be mixing up const and immutable. What do you mean about
const being too strong?

It seems that does what you want:

class A
{
    const B bff;

    this(B bestBuddy)
    {
        bff = bestBuddy;
    }
}

You missed the point about A needing to modify B. I want to express a constant relationship between objects, not that A or B are constant.

Cheers,
Seb

Reply via email to