在研究quick-3.3的时候,跟踪触摸事件分发部分的函数,发现了一个少见(多怪)的写法: ->*。
void Widget::pushDownEvent()
{
this->retain();
if (_touchEventCallback)
{
_touchEventCallback(this, TouchEventType::BEGAN);
}
if (_touchEventListener && _touchEventSelector)
{
(_touchEventListener->*_touchEventSelector)(this,TOUCH_EVENT_BEGAN);
}
this->release();
}
经调查这就是传说中的类函数指针,自己写了一个例子来测试。
//FuckTest.h
class FuckTest
{
public:
void shitFunction1( void)
{
printf("liujianlog : call shitFunction1 ");
}
void shitFunction2( void);
};
#include <stdio.h>
#include "FuckTest.h"
typedef void (fuckTest::* ShitFunctionOutside)(void ) ;//定义一个类成员函数
int main(int argc, const char * argv[]) {
ShitFunctionOutside shitFunctionOutside= &FuckTest::shitFunction1;
FuckTest fuckTest;
(fuckTest.*shitFunctionOutside)();//here .*
return 0;
}