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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top