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