2

次のコードスニペットを理解するのを手伝ってください。

(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は正確には何ですか?ある種の関数ポインタであることがわかりますが、アスタリスクの意味は何ですか?タイプ(??)の参照を解除し、どういうわけか、新しくtypedefされたポインターをMyTypeのタイプ(?!?)に「アタッチ」しようとしているようです。

誰かがここで光を当てることができますか?本当に混乱している:S

4

2 に答える 2

6

void (MyType::*)(SomeOtherType* t)MyType1つの引数(へのポインタSomeOtherType)を取り、何も返さないクラスのメンバー関数へのポインタです。

FAQLiteエントリ

于 2011-12-01T15:07:15.960 に答える
1

ポインタをパラメータとしてMyType返すメンバー関数へのvoidポインタ。SomeOtherType

于 2011-12-01T15:06:43.537 に答える