0

我正在尝试将一些代码从旧版本的程序移植到新版本,并且有些东西已经移动。有一个名为“Game”的类,它曾经包含一个名为 ButtonNameToIndex 的方法,但在较新的版本中,Game 类中现在有一个名为“InputScheme”的类,并且在 InputScheme 中声明了 ButtonNameToIndex

游戏.h:

class Game
{
public:
   const char *     m_szName;
   const Style * const* m_apStyles;
   bool         m_bCountNotesSeparately;
   bool         m_bAllowHopos;
   InputScheme      m_InputScheme;
}

输入方案.h:

class InputScheme
{
public:
    const char  *m_szName;
    int     m_iButtonsPerController;
    struct GameButtonInfo
    {
        const char  *m_szName;
        GameButton  m_SecondaryMenuButton;
    };

    GameButtonInfo m_GameButtonInfo[NUM_GameButton];
    const InputMapping *m_Maps;

    GameButton ButtonNameToIndex( const RString &sButtonName ) const;
}

我试图移植的代码如下所示:

FOREACH_ENUM( GameButton, pGame->ButtonNameToIndex("Operator"), gb )
    ini.SetValue( sPlayerKey, GameButtonToString(pGame, gb),
        FromMapping(mapping.m_iGameLights[gc][gb]) );

现在我无法弄清楚如何访问 ButtonNameToIndex ,因为它已移至一个新类。

4

1 回答 1

4

由于Game该类具有类型的公共成员变量,InputScheme因此您可以替换任何对

pGame->ButtonNameToIndex("Operator")

pGame->m_InputScheme.ButtonNameToIndex("Operator")

we use -> to access the member of Game since we are accessing through a pointer (I assume), since m_InputScheme is a value (not pointer) we access its member function using the . operator

于 2012-11-08T12:08:38.317 回答