opDispatch doesn't play nice with inheritance
    Adam D. Ruppe 
    destructionator at gmail.com
       
    Thu Nov 15 18:04:42 UTC 2018
    
    
  
On Thursday, 15 November 2018 at 17:14:21 UTC, Carl Sturtivant 
wrote:
> opDispatch is special in that it allows for functions to be 
> added to a class or struct when undefined overtly but used 
> elsewhere but it seems those functions sadly are final.
Right, all templates are final, including opDispatch.
What I've done in the past is to forward them to a virtual 
function with runtime arguments instead of compile time arguments.
Kinda like:
void opDispatch(string name)() {
      callMethod(name);
}
/* virtual */ void callMethod(string name) {
      // do a reflection loop or associate array or switch or 
whatever to dispatch it here, reimplemented (or at least 
re-mixed-in) in the child classes to account for their new methods
}
What exactly do you need to do with it? Maybe you can do an 
alternative design.
    
    
More information about the Digitalmars-d-learn
mailing list