C ++: puntero a la función miembro de la clase en el interior de una estructura no relacionada

StackOverflow https://stackoverflow.com/questions/1463150

Pregunta

He hecho un poco de lectura en línea en cuanto a cómo ir sobre esto y creo que lo estoy haciendo correctamente ... Mi objetivo es tener un conjunto de objetos de estructura que contienen punteros a los miembros de la funciones de una clase.

Esto es lo que tengo hasta ahora ...

typedef void (foo::*HandlerPtr)(...);
class foo
{
public:
    void someFunc(...);
    // ...
private:
    // ...
};

struct STRUCT
{
    HandlerPtr handler;
};

STRUCT stuff[]
{
    {&foo::someFunc}
};

A continuación, cuando se llama a la función con (. Cosas [0] * manejador) (), con o sin argumentos (Yo en realidad la intención de utilizar las listas de argumentos), me sale "controlador": identificador no declarado ...

Tengo que falta algo, pero no sé qué.

¿Fue útil?

Solución

someFunc () no es un método estático, por lo que necesita una instancia de objeto foo con el fin de llamar someFunc () a través de su variable puntero a método, es decir:

foo f;
f.*(stuff[0].handler)();

O:

foo f;
HandlerPtr mthd = stuff[0].handler;
f.*mthd();

O, el uso de punteros:

foo *f = new foo;
f->*(stuff[0].handler)();
delete f;

O:

foo *f = new foo;
HandlerPtr mthd = stuff[0].handler;
f->*mthd();
delete f;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top