La soluzione più semplice è utilizzare una classe base comune/un'interfaccia e un metodo virtuale, con una funzione per il dispatching.
In funzione di quello che devi fare ci sono poi svariate alternative.codice:class ClasseBase { virtual metodoComune(); }; class Derivata subclass ClasseBase { override metodoComune(); } class Derivata1 subclass ClasseBase { override metodoComune(); } ClasseBase create(dispatching_arg, args) { return (switch(dispatching_arg) { dispatch_Derivata: new Derivata(args); dispatch_Derivata1: new Derivata1(args); }); } main() { //get dispatching_arg and args ClasseBase c = create(dispaching_arg, args); c.metodoComune(); }

Rispondi quotando