Odd構文:Scope Operatorの後のAsterisk(::)?
-
27-10-2019 - |
質問
次のコードスニペットを理解するのを手伝ってください:
(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() { }
};
foo.hのtypedefはここで宣言していますか?それはある種の関数ポインターであることがわかりますが、アスタリスクの重要性は何ですか?タイプ(??)を参照しているようで、何らかの形で、新しくタイプ化されたポインターをmyTypeのタイプ(?!?)に「接続」しようとしています。
誰かがここに光を当ててもらえますか?本当に混乱している:s
解決
void (MyType::*)(SomeOtherType* t)
クラスのメンバー関数へのポインターです MyType
それには1つの議論が必要です(ポインター SomeOtherType
)そして何も返しません。
他のヒント
aへのポインタ MyType
メンバー関数の戻り void
ポインターを取得します SomeOtherType
パラメーターとして。
所属していません StackOverflow