Я думаю, вам следует улучшить форматирование, потому что даже в этот момент его уже трудно читать. Я едва ли когда-либо думаю о том, что может произойти на следующих этапах вашего проекта.
Теперь - прямо к вопросу.
Я думаю, вы хотите иметь следующее:
struct Games {
// whatever
bool value;
};
struct GamesHolder {
Games games;
};
Теперь, если Games
нетпросто держатель необработанных данных, но обозначает некоторую абстракцию или содержит слишком много данных для размещения в стеке, Вы можете использовать следующий шаблон:
struct GamesHolder {
Games* games_pointer;
};
Инициализация теперь может быть реализована следующим образом:
GamesHolder games_holder;
games_holder.games_pointer = new Games(...whatever);
// If the memory is not cleared when the 'games_holder'
// leaves the scope - bang - a memory leak.
Поскольку иногда ручное управление памятью становится проблемой в * ss, вы также можете захотеть начать использовать общие указатели:
struct GamesHolder {
std::shared_ptr<Games> games_pointer;
}
GamesHolder games_holder;
games_holder.games_pointer.reset(new Games(...));
// No leak if the 'holder' leaves the scope - memory
// is being automatically disposed.