Seltsame Syntax: Sternchen nach dem SCOPE -Operator (: :)?
-
27-10-2019 - |
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
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.
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