请问往CC_CALLBACK传入this指针的意义是什么?

例如:
auto closeItem = MenuItemImage::create(
“CloseNormal.png”,
“CloseSelected.png”,
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

void HelloWorld::menuCloseCallback(Ref* pSender) { … }

#define CC_CALLBACK_1(selector,target, …) std::bind(&selector,target, std::placeholders::_1, ##VA_ARGS)

按照我的理解,这个this指针会替代这个__target__,但是这有什么用?不就变成了 menuCloseCallback(this) ??那还要那个占位符干嘛?
如果是menuCloseCallback(_1) ,明显又不符合bind的用法。请教一下整个使用过程是怎么样的?

CC_CALLBACK_1(HelloWorld::menuCloseCallback, this)); 中this只是做参数用,cocos提供了4个cc_callback方法的

// new callbacks based on C++11
#define CC_CALLBACK_0(selector,target, …) std::bind(&selector,target, ##VA_ARGS)
#define CC_CALLBACK_1(selector,target, …) std::bind(&selector,target, std::placeholders::_1, ##VA_ARGS)
#define CC_CALLBACK_2(selector,target, …) std::bind(&selector,target, std::placeholders::_1, std::placeholders::_2, ##VA_ARGS)
#define CC_CALLBACK_3(selector,target, …) std::bind(&selector,target, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##VA_ARGS)

其实就是使用了std::bind方法,后面的占位符,可以传递多个参数。

可以参考这边博客,关于cc_callback的具体用法:http://blog.csdn.net/crayondeng/article/details/18767407

:7:

我还是不懂:
void HelloWorld::menuCloseCallback(Ref* pSender) 里面只需要输入一个参数,
那么std::bind(&selector,target, std::placeholders::_1, ##VA_ARGS)里面的target岂不是是第一个输入进selector的参数?那后面的占位符就没用了,因为bind的定义是:

    int f(int, char, double);
    // 绑定f()函数调用的第二个和第三个参数,
    // 返回一个新的函数对象为ff,它只带有一个int类型的参数
    auto ff = bind(f, _1, ‘c’, 1.2);
    int x = ff(7);                //  f(7, ‘c’, 1.2);

CC_CALLBACK_1(HelloWorld::menuCloseCallback, this) 就变成
std::bind(&menuCloseCallback , this ) 相当于变成menuCloseCallback(this)了,这还叫不指定一个参数吗?难道是因为引用的缘故?

我看了这里,总算是看明白了。原来非静态成员函数要bind上this指针 http://blog.csdn.net/qq575787460/article/details/8531397