private with alias this
r_m_r
r_m_r at mailinator.com
Mon Dec 24 18:12:11 PST 2012
On 12/25/2012 06:09 AM, bearophile wrote:
> D "private" is enforced only across distinct modules.
I've justed tested this and I think you're right (it seems a bit
counter-intuitive though ;-) ).
How about this:
//file: foo.d
module foo;
struct Foo
{
private int bar_;
@property int bar() const
{
return bar_;
}
@property void bar(int b)
{
bar_ = b;
}
alias bar this;
}
//file:main.d
module main;
import foo;
void main()
{
Foo b = Foo(10);
int a = b;
assert(a==10);
a = 20;
b = a;
assert(b==20);
assert(!__traits(compiles, b._bar));
}
//Compiled like so (to avoid linker errors):
$ dmd -lib foo.d -oflibfoo.a
$ dmd main.d -L-L. -L-lfoo
$ ./main
regards,
r_m_r
More information about the Digitalmars-d-learn
mailing list