alias this private?
Ali Çehreli
acehreli at yahoo.com
Sun Dec 9 00:27:44 PST 2012
On 12/08/2012 11:05 PM, js.mdnq wrote:
> Can it not be possible to use alias this on a private field?
I've just tested it. It is possible with dmd 2.060:
struct Q
{
private:
int _x;
public:
alias _x this;
}
void main()
{
auto q = Q();
q = 42;
assert(q._x == 42);
}
> struct Q
> private:
> int _x;
> public:
> alias _x this;
>
> ?
>
> Seems to me that one does not always want the user to access the
> internal value that is aliased ;/
Then the programmer should not "alias this" that member.
> Q q;
>
> q._x // error yet q, for all practical purposes is _x,
q is for /some/ practical purposes is _x. :)
> we just stop the
> user from being able to directly access it.
That is the case, because the member is private.
> For example, maybe I want to override opAssign on an int.
Sorry, I could not understand that.
> The user can
> get around it by doing q._x. Seems like a bad idea.
The user can't do that because _x is private. If they can, then it must
be a bug. One thing that is confusing in D is that private members of a
type are accessible by the module that includes that type. Is that the
question?
Ali
More information about the Digitalmars-d-learn
mailing list