www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Alias this and inheritance

reply Jacob Carlborg <doob me.com> writes:
The following code does not compile:

void foo(string a) {}

class Base
{
     alias bar this;

     string bar()
     {
         return "";
     }
}

class Sub : Base {}

void main()
{
     auto sub = new Sub;
     foo(sub);
}

But if the "alias this" is copied/moved to the subclass it works. Is 
this expected behavior?

-- 
/Jacob Carlborg
Jun 05 2017
parent ketmar <ketmar ketmar.no-ip.org> writes:
Jacob Carlborg wrote:

 The following code does not compile:

 void foo(string a) {}

 class Base
 {
      alias bar this;

      string bar()
      {
          return "";
      }
 }

 class Sub : Base {}

 void main()
 {
      auto sub = new Sub;
      foo(sub);
 }

 But if the "alias this" is copied/moved to the subclass it works. Is this 
 expected behavior?
yes, afaik. the reasons are similar to not automatically bringing overloads when you're doing override, and avoiding other "automatic helpers" most of the time: it can quickly get out of control.
Jun 05 2017