Syntaxe Odd: astérisque après l'opérateur de portée (: :)?
-
27-10-2019 - |
Question
Aidez-moi à comprendre l'extrait de code suivant:
(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() { }
};
Quel est exactement le typedef en déclarant foo.h ici? Je peux voir que c'est un pointeur de fonction d'un certain type, mais quelle est la signification de l'astérisque? Il semble être de-référencement d'un type (??) et en quelque sorte à essayer de « fixer » le pointeur nouvellement typedef du type de MyType (?!?).
Quelqu'un peut-il faire la lumière ici s'il vous plaît? Vraiment confus: S
La solution
void (MyType::*)(SomeOtherType* t)
est un pointeur vers une fonction membre dans MyType
de classe qui prend un argument (pointeur vers SomeOtherType
) et rien de retour.
FAQ entrée Lite.
Autres conseils
pointeur vers une fonction membre de MyType
retour void
et prenant pointeur vers SomeOtherType
en tant que paramètre.