tupleof seems to break encapsulation
60rntogo
60rntogo at gmail.com
Fri Sep 4 10:16:47 UTC 2020
Consider the following code.
foo.d
---
module foo;
struct Foo
{
private int i;
}
---
main.d
---
void main()
{
import std.stdio;
import foo;
auto x = Foo();
writeln(x);
// ++x.i;
++x.tupleof[0];
writeln(x);
}
---
As expected, the commented line does not compile. If I uncomment
it, I get the error "no property i for type foo.Foo". However,
the rest of the code compiles just fine and outputs:
---
Foo(0)
Foo(1)
---
This appears to defeat the purpose of declaring i private. What
am I missing?
More information about the Digitalmars-d-learn
mailing list