how to make private class member private

ketmar ketmar at ketmar.no-ip.org
Tue Mar 13 02:29:19 UTC 2018


psychoticRabbit wrote:

> On Tuesday, 13 March 2018 at 01:39:13 UTC, Jonathan M Davis wrote:
>>
>> private is private to the module, not the class. There is no way in D to 
>> restrict the rest of the module from accessing the members of a class. 
>> This simplification makes it so that stuff like C++'s friend are 
>> unnecessary. If your class in a separate module from main, then main 
>> won't be able to access its private members.
>>
>> - Jonathan M Davis
>
> Mmm.. I don't think I like it.
>
> I feel you should be able to make a member of a class, private, 
> regardless of where the class is located. This seems to break the concept 
> of class encapsulation.
>
> No. I don't like it at all.

just stop thinking in C/C++ "#include" terms. there, you have no other ways 
to restrict data access, so they were forced to make it broken, and then 
introduce "friends" just to workaround the fact that there are no modules 
in C++.

instead, start thinking with modules in mind. module is THE unit of 
incapsulation. there is nothing wrong in isolating class or two in a 
module. then, to make imports manageable, either create a package of that, 
or just a dummy module that does `public import xxx;` for everything.


More information about the Digitalmars-d-learn mailing list