对cocos2dx 回调函数ccMenuCallback的一点疑惑

最近对cc_callback 和 std::bind做了下学习研究,发现个纳闷的事情。
以cocos2dx 3.8.1的官方test项目为例:
BaseTest.cpp 中有这么一段

MenuItemLabel * MenuItemLabel::create(Node*label, const ccMenuCallback& callback)

ccMenuCallback的定义是这样的
typedef std::function<void(Ref*)> ccMenuCallback;
这不是个返回为空,带一个参数Ref*的函数么?而为什么实际上回调函数根本没有形参呢?

void TestBase::backsUpOneLevel()
{
if (_parentTest)
{
_parentTest->runThisTest();
this->release();
}
}

而自己实际开发中是这样的:
cocos2dx的定义
MenuItemImage * MenuItemImage::create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, const ccMenuCallback& callback)
同样还是需要一个ccMenuCallback

自己的代码只能用cc_callback
pTool = MenuItemImage::create(“gem_switch_selected.png”, “gem_switch_selected.png”, “gem_switch_normal.png”, CC_CALLBACK_1(BuyScene::menuCallback, this));

回调函如下,带有形参Ref*
void BuyScene::menuCallback(Ref* pSender)

但是我用std::bind 会报错,
不能写成
pTool = MenuItemImage::create(“gem_switch_selected.png”, “gem_switch_selected.png”, “gem_switch_normal.png”, std::bind(&BuyScene::menuCallback, this));
求大神释疑,这是为什么啊?

修学不精,对回调理解不透彻,发现这个怎么改了,应该写成

pTool = MenuItemImage::create("gem_switch_selected.png", "gem_switch_selected.png", "gem_switch_normal.png", CC_CALLBACK_1(BuyScene::menuCallback, this, pTool));

```



至于之前那个问题,可能可以少不可多吧。