Frage

Hilf mir, den folgenden Code -Snippet zu verstehen:

(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() { }    
};

Was genau erklärt der Typedef in foo.h hier? Ich kann sehen, dass es sich um einen Funktionszeiger handelt, aber was ist die Bedeutung des Sternchen? Es scheint ein Typ (??) zu referenzieren und irgendwie zu versuchen, den neu typedef'd-Zeiger an die Art von MyType (?!?) "Anzuhängen".

Kann hier bitte jemand etwas Licht werfen? Wirklich verwirrt: s

War es hilfreich?

Lösung

void (MyType::*)(SomeOtherType* t) ist ein Zeiger auf eine Mitgliedsfunktion im Unterricht MyType Das braucht ein Argument (Zeiger auf SomeOtherType) und gibt nichts zurück.

FAQ Lite -Eintrag.

Andere Tipps

Zeiger auf a MyType Mitgliedsfunktion Rückgabe void und Zeiger auf SomeOtherType als Parameter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top