1

我是 C++ 新手,正在尝试学习 Extreme Tux Racer 的代码。在 main 方法的代码中,它说 manager.Run(...)。对我来说,这看起来像是在 State 命名空间中运行管理器对象的 Run 方法。

switch (g_game.argument) {
        case 0:
            State::manager.Run(SplashScreen);
            break;
        case 4:
            g_game.toolmode = TUXSHAPE;
            State::manager.Run(Tools);
            break;
        case 9:
            State::manager.Run(OglTest);
            break;
    }

我假设必须在某处声明和定义管理器对象的运行方法。但是我在所有包含的文件中搜索了单词管理器,但找不到它。我在这里想念什么?

4

1 回答 1

4

看起来他们将文件名设置为与类名相同,这是一个好方法。所以在 中states.h,您可以看到所有定义:

class State {
  //...
  static Manager manager;  // manager is static member
  //...
};

静态成员可以通过::, .or-> 操作符访问。

State::manager.Run(..); // valid
State state;
state.manager.Run(..);  // valid as well

State *pState = &state;
pState->manager.Run(..); // also valid
于 2013-10-01T05:42:21.880 回答