Sintaxis impar: Asterisk después del operador de alcance (: :)?
-
27-10-2019 - |
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
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.
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