成员函数指针错误:必须调用对非静态成员函数的引用

问题描述 投票:0回答:1
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标准和cococ2d-x ver4.0库的XCode上收到此错误。

更新:我尝试了此代码

this->scheduleOnce(schedule_selector(&SelectGameScene::startGameCallback),this, 0.0f, false);

我在使用未声明的标识符'schedule_selector'时出错”>

Update2

我发现了问题。我通过静态方法createScene创建了此类。
class SelectGameScene : public cocos2d::Layer
{
 public:
   static cocos2d::Scene* createScene();
 }

this-> scheduleOnce(schedule_selector(SelectGameScene :: startGameCallback),this,0.0f,false);我收到一个错误:必须调用对非静态成员函数的引用。 void startGameCallback(float ...

c++ xcode c++11 cocos2d-x
1个回答
1
投票

语法SelectGameScene::startGameCallback无效。它必须具有&

© www.soinside.com 2019 - 2024. All rights reserved.