passing subclass to superclass where parameter is a delegate for the superclass

Chris Bare chris at bareflix.com
Wed Nov 14 16:06:21 UTC 2018


If I have:
class base
{
     void delegate(base) stored_dg;

     void
     add_function (void delegate (base) dlg)
     {
         stored_dg = dlg;
     }
}

class A : base
{
     this ()
     {
         super ();
         add_function (&this.foo);
     }

     void foo (A a)
     {
         log ("i got here");
     }
}

it fails because foo(A) does not match the parameter type of 
delegate(base)

If I change foo (A a) to foo (base a)

It works, but this could be awkward in a deeper class hierarchy 
where you
might not know the class name to use.

Is there a way to do this where foo's parameter type does not to 
match the
class that implements add_function?

Thanks,
Chris


More information about the Digitalmars-d-learn mailing list