关于cocos2d-x-v3 自定义事件的问题

问题暂时标记为已解决,希望有更好的答案

在cocos2d-x 2的版本中,消息通知,使用CCNotificationCenter,
但据说在cocos2d-x 3的版本里,推荐使用自定义事件来实现

那么问题来了,
我想在自定义事件中,触发事件的同时,传入用户数据,有以下两种方案

方案一:失败!

定义
Director::getInstance()->getEventDispatcher()->addCustomEventListener("onShowMessage", CC_CALLBACK_1(WorldMapLayer::onShowMessage,this));
WorldMapLayer::onShowMessage(void* pUserData)
{
    ... ...(1)
}
调用
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("onShowMessage","some words.");


```



方案二:成功!
定义
Director::getInstance()->getEventDispatcher()->addCustomEventListener("onShowMessage", (EventCustom* event){

    event.getUserData();
    ... ...(2)
}
调用
EventCustom event("onShowMessage");
event.setUserData("some words.");
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);


```


请问方案一为什么会失败,是哪里的问题?求告知,
在这里先谢过各路大神了

std::string str = “some words.”;
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(“onShowMessage”,&str);
换成这个试试。

感谢abc88798,这里确实应该传入地址
但又有新问题,在测试时发现
string word = “abcde”;

log("____%s", static_cast<string*>(pEvent->getUserData()));

经过log输出的居然是
____8&4abcde

很奇怪的说,多出来一些字符

经过我的验证,触发事件时,采用以下的代码就不会有问题

EventCustom event(“onShowMessage”);
event.setUserData(“abcde”);
Director::getInstance()->getEventDispatcher()->dispatchEvent(&event);

onShowMessage函数这样写看看
void HelloWorld::onShowMessage(void pUserData)
{
auto userData = (EventCustom
)pUserData; //pUserData 是个 EventCustom
auto str = *(static_caststd::string*(userData->getUserData()));
CCLOG("%s",str.data());
}