sintassi dispari: asterisco dopo operator ambito (: :)?
-
27-10-2019 - |
Domanda
aiutarmi a capire il seguente frammento di codice:
(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() { }
};
Che cosa è esattamente il typedef in foo.h dichiarando qui? Posso vedere che è un puntatore a funzione di qualche tipo, ma qual è il significato della asterisco? Sembra essere de-fa riferimento a un tipo (??) e in qualche modo cercando di "collegare" il puntatore di recente typedef al tipo di MyType (?!?).
Qualcuno può far luce qui per favore? Davvero confuso: S
Soluzione
void (MyType::*)(SomeOtherType* t)
è un puntatore ad una funzione membro della classe MyType
che accetta un argomento (puntatore a SomeOtherType
) e restituisce nulla.
FAQ Lite .
Altri suggerimenti
puntatore a una funzione membro MyType
ritorno void
e prendendo puntatore a SomeOtherType
come parametro.