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)是指向类MyType中成员函数的指针,它接受一个参数(指向 的指针SomeOtherType)并且不返回任何内容。

常见问题精简版条目

于 2011-12-01T15:07:15.960 回答
1

指向MyType成员函数的指针,返回void并将指针SomeOtherType作为参数。

于 2011-12-01T15:06:43.537 回答