Passing reference data to class and incapsulation

Uranuz via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Nov 28 09:36:30 PST 2014


On Friday, 28 November 2014 at 08:31:26 UTC, bearophile wrote:
> Uranuz:
>
>> Same situation happens when I assign reference data to 
>> properties.
>
> Someone has suggested to solve this problem with an attribute, 
> like "owned", that forbids to return mutable reference data 
> owned by a class/struct instance.
>
> Bye,
> bearophuile

Yes. Problem is even if you have property that controls correct 
assignment. If you have getter that returns mutable reference 
type and you try to access some fields of it or apply index 
operator (for arrays or AA) *host* cannot control corectness of 
these assignments or cannot react to these changes (in order to 
do some changes in model).

The way I see is to create my own type of Array for this that can 
notify *host object* about changes so it could refresh the model 
or do some checks.

Another way is to write interfaces in a way so we cant't escape 
uncontrolled references to mutable data.

What do you think of it? Is there any patterns that could help to 
solve such problems?

I think that writing your own type every time when you need to 
enforce consistency and safety is not very good))


More information about the Digitalmars-d-learn mailing list