typedef'ing function * signature * (no es un puntero a), para que pueda reutilizarse?
EDIT: MOTIVACIÓN
Supongo que defino una clase de controlador como
class Handler {
public:
class Message { /*...*/ };
typedef int (*Callback)(Message *msg);
void registerCallback(int msgclass, Callback f);
};
Un cliente puede hacer
int f1(Handler::Message *msg)
{ /* handle message */ }
int f2(Handler::Message *msg)
{ /* handle message */ }
int main(){
Handler h;
h.registerCallback(1, f1);
h.registerCallback(2, f2);
// ....
}
El compilador de hecho verificará quef1
yf2
son apropiados como parámetros pararegisterCallback
, sin embargo, depende del cliente definirf1
yf2
correctamente. Como ya hetypedef
edCallback
, Me gustaría que el cliente pueda usarlo en su lugar.
END EDIT
Me gustaría hacer algo como esto:
typedef int arithmetic(int i, int j);
arithmetic sum
{
return i+j;
}
arithmetic max
{
return (i>j)? i:j;
}
// etc.
Sin embargo, ambos
arithmetic sum
arithmetic sum()
no compile, y también este
arithmetic sum(int i, int j)
which da error de compilación de
func.cpp: 4: error: "suma" declarada como función que devuelve una función
La razón por la que quiero esto es porque quiero tener unaHandler
clase que proporcionaría unatypedef
para una función de devolución de llamada que acepta, incluyendo la lista de parámetros.