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

Reply via email to