类中的类的访问方法

时间:2012-11-08 12:02:12

标签: c++ class nested-class

我正在尝试将一些代码从较旧版本的程序移植到较新版本,并且有些东西已经移动了。有一个名为'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它已移动到新类。

1 个答案:

答案 0 :(得分:4)

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

的任何调用
pGame->ButtonNameToIndex("Operator")

pGame->m_InputScheme.ButtonNameToIndex("Operator")

我们使用->来访问Game的成员,因为我们通过指针访问(我假设),因为m_InputScheme是我们访问其成员函数的值(不是指针)使用.运算符