Nested sibling classes

seany seany at uni-bonn.de
Thu Jan 12 17:05:04 UTC 2023


Please Consider the code:

         import std.stdio;

         class a {

         public:
              this(){}
             ~this(){}

             class b {

             public:
                     this.outer.c C = new this.outer.c();
                      this() {
                             writeln(this.C.i);
                     }
                     ~this() {}

             }

             class c {
             public:
                      this() {}
                     ~this() {}
                     int i = 10;
             }

         }


         int main () {

             int [int][int] test;

             test[0][20] = 19;
             writeln(Test[0][20]);


             a A = new A();
             a.b B = a.new a.b();
             return 0;
         }


Compiling with dmd tells me:
`test.d(12): Error: undefined identifier `` this.outer.c `` ` (i 
used two backticks, but i can't seem tobe escaping the backtick 
character correctly in this forum)

On fish shell we have:
❯ dmd --version
DMD64 D Compiler v2.101.2

Copyright (C) 1999-2022 by The D Language Foundation, All Rights 
Reserved written by Walter Bright


If i remove the "this.outer" and just write, c C = new c(); then 
i have:

`test.d(12): Error: cannot construct nested class ` c ` because 
no implicit ` this ` reference to outer class ` a ` is available`


How can I make it, that classes b and c can access each other, 
and create instances of each other freely? Thank you.



More information about the Digitalmars-d-learn mailing list