如何通过命名空间调用非静态方法

How to call a non-static method through namespace

我不是很明白GameScene::onTime。 onTime 不是静态方法。

1.DoesGameScene::onTimereturn一个函数指针?

2.Is 可以这样写 this->onTime(1.0f); ?

void GameScene::createGameInterface() {
   this->schedule(schedule_selector(GameScene::onTime), 1.0f);
}

void GameScene::onTime(float dt)
{
  if (isPaused)
        return;
  sec++;
  timer_lbl->setString(Utils::secondsToTimeString((int)sec));
}

在哪里

typedef void (Ref::*SEL_SCHEDULE)(float);
#define CC_SCHEDULE_SELECTOR(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)

void Node::schedule(SEL_SCHEDULE selector)
{
  this->schedule(selector, 0.0f, CC_REPEAT_FOREVER, 0.0f);
}

从名称来看,代码正在安排某个计时器上的函数调用。

  1. GameScene::onTime 是一个成员函数指针,尽管在 C++ 中完全正确,它应该拼写为 &GameScene::onTime(即显式包含地址获取运算符)。
  2. this->onTime(1.0f) 会改变代码的含义,因为它会同步调用 onTime,而不是稍后异步安排调用。