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.

Reply via email to