Focus
Andrey
andr-sar at yandex.ru
Fri Jan 18 16:55:51 PST 2013
On Saturday, 19 January 2013 at 00:11:03 UTC, Adam D. Ruppe wrote:
> On Saturday, 19 January 2013 at 00:04:24 UTC, Andrey wrote:
>> So how am I supposed to hide the variable inside the struct or
>> class?
>
> Generally the D answer here is to put them in separate files.
> The module (file) is the main D encapsulation unit rather than
> the class/struct.
>
> It isn't the same as C++ but I find it works pretty well - you
> often do one file per class anyway, and files are a natural
> unit for encapsulating too.
>
>> I'm sure "friend" explodes the basics of OOP encapsulation
>> mechanics.
>
> http://www.parashift.com/c++-faq/friends-and-encap.html
>
> If you have helper structures it can be useful to get at the
> private parts anyway, for example an iteration range.
Are nested classes quite more perfectly suited for this? In my
containers I implement iterator interface using nested class.
Then I can easily construct mycontainer.new Iterator and have
(should have by theory) access to protected (not private)
members. Also I will be ensured that this is a proper iterator
and that it can be constructed only when I have the instantiated
parent container.
And after that D forces you to restrict access not via default
language construct, but via having one declaration per file. I
think this is a not correct. In OOP concept you don't have such
thing as a file or module. There are no files, there is ONE
program with multiple data structures and hierarchies, united
under one super root. Well, at least, that is how this supposed
to work from the start.
«Actually I made up the term "object-oriented", and I can tell
you I did not have C++ in mind.» Alan Key.
More information about the Digitalmars-d
mailing list