On Tuesday, 2 April 2019 at 18:20:09 UTC, Andrey wrote:
Hello,
In this example how can I access the members "read" and "q" of
struct Outer from Inner struct?
struct Outer
{
ulong q = 1;
Inner inner;
void read(ulong value)
{
q += value;
}
void run()
{
q.writeln;
read(5);
}
struct Inner
{
void write(string text)
{
read(text.length);
writeln(q);
}
}
}
void main()
{
Outer ttt;
ttt.run();
}
During compilation I get:
onlineapp.d(55): Error: this for read needs to be type Outer
not type Inner
onlineapp.d(56): Error: need this for q of type ulong
After removing the calls to writeln, the error I get is:
`this` for `read` needs to be type `Outer` not type `Inner`
You cannot access stuff in Outer because Inner objects are not
outer objects and don't implicitly own an Outer object. In your
Inner method `write`, there is no Outer object present at all to
call the method on.