Я пытаюсь перенести некоторый код из более старой версии программы в более новую версию, и некоторые вещи изменились. Существует класс с именем 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 сейчас, когда он перешел в новый класс.
Так как Game
класс имеет открытую переменную-член типа InputScheme
Вы можете заменить любые звонки на
pGame->ButtonNameToIndex("Operator")
с
pGame->m_InputScheme.ButtonNameToIndex("Operator")
мы используем ->
чтобы получить доступ к члену Game
так как мы обращаемся через указатель (я предполагаю), так как m_InputScheme
это значение (не указатель) мы получаем доступ к его функции-члену, используя .
оператор
Других решений пока нет …