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