0

いくつかのコードを古いバージョンのプログラムから新しいバージョンに移植しようとしていますが、いくつかのものが移動しました。'Game'というクラスがあり、ButtonNameToIndexというメソッドを含めるために使用されますが、新しいバージョンでは、Gameクラス内に'InputScheme'というクラスがあり、ButtonNameToIndexはInputSchemeで宣言されています。

Game.h:

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

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が新しいクラスに移動したため、ButtonNameToIndexにアクセスする方法がわかりません。

4

1 に答える 1

4

Gameクラスにはタイプのパブリックメンバー変数があるためInputScheme、次の呼び出しを置き換えることができます。

pGame->ButtonNameToIndex("Operator")

pGame->m_InputScheme.ButtonNameToIndex("Operator")

ポインタを介してアクセスしているため(私は推測します)、->のメンバーにアクセスするために使用します。これは値(ポインタではない)であるため、演算子を使用してそのメンバー関数にアクセスしますGamem_InputScheme.

于 2012-11-08T12:08:38.317 に答える