【已解决】请教一下回调函数中target参数的意思,为什么一般都是this指针?

比如如下,

auto closeItem = MenuItemImage::create(
                                       "CloseNormal.png",
                                       "CloseSelected.png",
                                       CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

this的意思应该是作用的目标对象,即HelloWorld类,那为什么还要HelloWorld::menuCloseCallback来指明是HelloWorld::中的方法呢?去掉HelloWorld::又报错。

对于这个this听困惑的,望各位帮忙解惑,感谢。

哇哈哈,几个月前我也问了同样的问题

这个是因为CC_CALLBACK是std::bind来实现的,而bind对普通函数和类的成员函数使用时,参数是不一样的,对于类的成员函数,第二个参数是这个成员函数的类的实例,所以现在就是this了

似乎明白点了,感谢啊!
HelloWorld::是表明这个函数是属于哪个类的,而this是表明具体是哪个object,即传递给函数的隐藏指针是哪个。

HelloWorld::menuCloseCallback 这个是成员函数的地址
要调用成员函数。必需要类对像调用。底层都是用->*操作符来调用成员函数的(当前也可以用汇编,或是其它方法,我知道的只有三种),成员函数是不能直接调用,因为成员函数需要传入个默认参数this,
这个不懂。你可以去搜一下成员函数回调之类的。

嗯,感谢热心回答!我想我明白了。