Pregunta

Ayúdame a entender el siguiente fragmento de código:

(foo.h)

class Foo
{
   public:
        typedef void (MyType::*Handler)(SomeOtherType* t);

        Foo(Handler handler) : handler_(handler) { }

   private:
        Handler handler_;
};

(mytype.h)

class MyType
{
     public:
          MyType() { }
          void fun1() { }
          void fun2() { }    
};

¿Qué es exactamente el typedef en foo.h declarando aquí? Puedo ver que es un puntero de función de algún tipo, pero ¿cuál es el significado del asterisco? Parece ser desferenciando un tipo (?

¿Alguien puede arrojar algo de luz aquí por favor? Realmente confundido: S

¿Fue útil?

Solución

void (MyType::*)(SomeOtherType* t) es un puntero a una función de miembro en clase MyType que toma un argumento (puntero a SomeOtherType) y no devuelve nada.

FAQ Entrada de lite.

Otros consejos

Puntero a un MyType Función de miembros que regresa void y tomando puntero a SomeOtherType como parámetro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top