On Mon, 14 Feb 2011 10:52:41 -0500, Andrej Mitrovic
<[email protected]> wrote:
On 2/14/11, Steven Schveighoffer <[email protected]> wrote:
What's wrong with:
class Foo {
private int _x, _y;
this(int x, int y) {
_x = x;
_y = y;
}
int sumXY() {
return _x + _y;
}
}
Nothing! But the OP asked why it's possible to access the private
state of a class if the code that accesses it is in the same module as
the class. So I just threw in an example (which admittedly doesn't
make much sense, and personally I don't like to access private state
outside the class).
I meant as an alternative to UFC syntax. I still am not enamored by it's
capabilities.
FWIW, classes/functions/structs in the same module are able to access all
private and protected data to alleviate the need for the 'friend'
attribute in C++. In C++ a friend function is able to access all private
data. The most common use of friend functions is for output stream
processors (since the operator is on the stream and not the object being
outputted).
The theory for the private access in a module goes that likely the same
author wrote all the code in that module, so he should understand what the
code is supposed to do and have free access to anything. It seems to work
pretty well in practice (at least for me anyway).
-Steve