Originariamente inviato da giuseppe500
il fatto è che per sapere se una classe ha quel metodo devo sapere che interfaccia implementa(o classe astratta)sbaglio Who am I ? e questo in java si puo fare con la keyword instanceof(penso)
in c++ questo non si puo fare, forse si potrebbe usare il dynamic_cast ma non penso sia una cosa completamente ad oggetti chiedersi se la classe implementa un interfaccia e agire di conseguenza.
deve essere l'oggetto che agisce in seguito alla chiamata di un metodo in modo differente o meno.
E' per questo che mi sto chiedendo se la mia domanda non sia in realtà una "cattiva domanda" cioè fuori dall astrazione degli oggetti.
non so .
O percaso intendevi dire di ereditare i controller da una classe astratta base e implementare solo le funzioni che voglio che facciano qualcosa?
questa potrebbe essere una soluzione, prezzo un interfaccia base che potrebbe essere grandissima e che comunque non conosco a priori se una classe ha o meno quel metodo , il metodo semplicemente puo fare qualcosa o meno.
è cosi' quello che intendevi?
Te la cavi passando un oggetto del tipo della classe base, che è astratta.
Così sei sicuro che tutti gli oggetti rispondono a quel metodo, e lo fanno in maniera dinamica.Non ti servirà usare il dynamic cast, e soprattutto, se vuoi ereditare da una classe che eredita dalla classe base astratta, ti basta che nel costruttore assegni il puntatore a funzione alla funzione giusta, che richiama quel metodo, ed è fatta.
In pratica in C++ la chiamata dinamica dei metodo come in Java si può simulare.
D' altronde secondo il mio concetto di OOP non ha senso chiamare i metodi staticamente.
Ogni oggetto dovrebbe rispondere a seconda del tipo che è, indipendentemente dal tipo del riferimento che si usa per l' accesso all' oggetto.