为什么事件监听回调函数里捕捉的参数并没有实际改变

在表达式里面的确改变了,输出也是改变的,但是作为另一个触摸事件回调函数的参数时却依然是初始化的0,并没有实际改变

int num = 0;

auto statelistener = EventListenerCustom::create("MusicIsONed/OFFed", (EventCustom* event)
{
    this->setUserData((void*)(event->getUserData()));
    bool state = this->getUserData();
    if (state)
    {
        log("收到状态信息:音乐播放中");
        num = 2;
        log("按下按钮事件改为:%d", num);
    }
    else
    {
        log("收到状态信息:音乐停止中");
        num = 3;
        log("按下按钮事件改为:%d", num);
    }
});

Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(statelistener, 1);

button->addTouchEventListener(CC_CALLBACK_2(MusicButton::MusicONOFF, this, num));

return true;

}

void MusicButton::MusicONOFF(Ref* pSender, ui::Widget::TouchEventType type, int num)
{
log("%d", num);
}

void MusicButton::MusicONOFF(Ref* pSender, ui::Widget::TouchEventType type, int num)
{
log("%d", num);
}
此处输出为0,事件肯定监听到了,两个函数都有输出