Cumulative

Steve Teale steve.teale at britseyeview.com
Mon Feb 24 00:41:04 PST 2014


25 years ago, when I was trying to write some sort of library to 
go with Walter's C++ compiler, I had a wish, and it still pops 
into my head from time to time.

What I wanted was functions that were declared in a base class as 
'cumulative', or something similar. They would have been 
generally like virtual functions, except that any derived class 
that wanted to do something extra - as opposed to something 
different, would simply define an 'extend', and just specify the 
extra code. The compiler would then automatically add a call to 
the same function in whatever base class last defined or extended 
the method.

extend void foo()   // Declared in base class as cumulative void 
foo()
{
    (cast(BaseClass) this).foo();  // Compiler does this for you
                                   // similar to changing a light 
bulb ;=)

    // the extra stuff
}

I think also that it might be necessary for the base class 
function to return on behalf of the derived method as opposed to 
to it.

Does this make any sense?

Steve


More information about the Digitalmars-d mailing list