【问题标题】:How to call a non-static method through namespace如何通过命名空间调用非静态方法
【发布时间】:2020-02-05 11:30:50
【问题描述】:

我不完全了解 GameScene::onTime。 onTime 不是静态方法。

1.GameScene::onTime 是否返回函数指针?

2.是否可以这样写->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);
}

【问题讨论】:

标签: c++ cocos2d-x


【解决方案1】:

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

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

【讨论】:

  • 强调成员函数指针。这是您可以搜索的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多