Estoy tratando de punteros de función miembro importancia a las plantillas de la siguiente manera: (Esta es una versión simplificada de mi código real)sobrecargado puntero de función miembro a la plantilla
template<class Arg1>
void connect(void (T::*f)(Arg1))
{
//Do some stuff
}
template<class Arg1>
void connect(void (T::*f)())
{
//Do some stuff
}
class GApp
{
public:
void foo() {}
void foo(double d) {}
};
entonces quiero hacer como los siguientes para cada métodos sobrecargados en GAPP:
connect(&GApp::foo);
para llamar a este foo()
está bien, pero ¿cómo puedo llamar a esto para foo(double d)
? ¿Por qué no funciona lo siguiente?
connect((&GApp::foo)(double));
Me dará
error de sintaxis: 'doble' debe ir precedida de ')'
No entiendo la sintaxis que debe ser utilizado aquí. Esto puede ser una pregunta estúpida, pero ¿alguien me puede ayudar en esto?
Es una mejor idea usar Functors en lugar de punteros a funciones en mi humilde opinión. – Drakosha
Todo el código es parte de la implementación de un mecanismo de Señal y Ranura. Entonces, el litener (que tiene la ranura) no quiere saber sobre el sistema. Entonces, no puedo decirle al oyente que haga esto, haga esto ... – Morpheus