função typedef'ing * signature * (não um ponteiro para), para que possa ser reutilizada?
EDIT: MOTIVATION
Suponha que eu defina uma classe Handler como
class Handler {
public:
class Message { /*...*/ };
typedef int (*Callback)(Message *msg);
void registerCallback(int msgclass, Callback f);
};
Um cliente pode fazer
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);
// ....
}
O compilador realmente verificará sef1
ef2
são apropriados como parâmetros pararegisterCallback
no entanto, cabe ao cliente definirf1
ef2
corretamente. Desde que eu játypedef
edCallback
, Gostaria que o cliente pudesse usá-lo.
EDIT FIM
Eu gostaria de fazer algo assim:
typedef int arithmetic(int i, int j);
arithmetic sum
{
return i+j;
}
arithmetic max
{
return (i>j)? i:j;
}
// etc.
No entanto, ambos
arithmetic sum
arithmetic sum()
não compile, e também isso
arithmetic sum(int i, int j)
que fornece erro de compilação de
func.cpp: 4: error: 'sum' declarado como função retornando uma função
A razão pela qual eu quero isso é que eu quero ter umHandler
classe que forneceria umatypedef
para uma função de retorno de chamada aceita,incluindo a lista de parâmetros.