consideri un codice seguente:È possibile creare il metodo call dispatcher in C++?
struct X {
void MethodX() {
...
}
};
struct Y {
void MethodY() {
...
}
};
void test() {
X x;
Y y;
Dispatcher d;
d.Register("x", x, &X::MethodX);
d.Register("y", y, &Y::MethodY);
d.Call("x");
d.Call("y");
}
La domanda è: come implementare Dispatcher. Non mi importa che X e Y possano ereditare da qualcosa, ma Dispatcher dovrebbe consentire ulteriori client (non solo X e Y). E vorrei evitare i puntatori * vuoti * se possibile :)
hai un accesso alla libreria boost? –
Potrebbe chiarire per favore "Il problema è il tipo di struttura dati che mantiene i puntatori o i funtori del metodo." –
Stavo cercando di implementarlo con il modello std :: tr1 :: mem_fun. Ma il tipo di risultato era all'interno del tipo di parametri. Quindi non ho potuto creare un vettore eterogeneo che lo contenga. –