我正在尝试将一些代码从较旧版本的程序移植到较新版本,并且有些东西已经移动了。有一个名为'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它已移动到新类。
答案 0 :(得分:4)
由于Game
类具有InputScheme
类型的公共成员变量,因此您可以替换对
pGame->ButtonNameToIndex("Operator")
带
pGame->m_InputScheme.ButtonNameToIndex("Operator")
我们使用->
来访问Game
的成员,因为我们通过指针访问(我假设),因为m_InputScheme
是我们访问其成员函数的值(不是指针)使用.
运算符