this->scheduleOnce(schedule_selector(SelectGameScene::startGameCallback),this, 0.0f, false);
出现错误:必须调用对非静态成员函数的引用。
void startGameCallback(float dt); //in h file
void SelectGameScene::startGameCallback(float dt)
{
Director::getInstance()->replaceScene(TransitionFade::create(TRANSITION_TIME, GameScene::createScene()));
}
地点
#define CC_SCHEDULE_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)
typedef void (Ref::*SEL_SCHEDULE)(float);
我在使用C++11标准和cococ 2d-x ver4.0库的XCode上遇到了这个错误。
**更新:**我尝试了此代码
this->scheduleOnce(schedule_selector(&SelectGameScene::startGameCallback),this, 0.0f, false);
出现错误使用未声明的标识符'schedule_selector'
Update 2我发现了问题。我通过静态方法createScene创建了这个类。
class SelectGameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
}
3条答案
按热度按时间nqwrtyyt1#
sytax
SelectGameScene::startGameCallback
无效。它必须具有&
:hgtggwj02#
XCode编译器认为SelectGameScene::startGameCallback是静态方法,但它只是一个成员函数指针,所以我决定重写这条语句。
从
到
因为
x33g5p2x3#
此错误可在v4中重现。它是由“CCRef. h”中的已弃用宏引起的,这些宏现已消失。
只需将“schedule_selector”替换为“CC_SCHEDULE_SELECTOR”即可。