Почему мой элемент вектора весь мусор?

у меня есть GameLobby класс, который хранит список текущих активных игр. Я хочу получить активные игры с GameLobby (singleton) и отображать их пользователю.

(Отказ от ответственности: я довольно плохо знаком с C ++, поэтому следующий код не совсем звездный. И при этом это не полный код, но я уверен, что все соответствующие инструкции были включены.)

Сначала некоторые определения

class GamesMenu : public MyGameLayer
{
private:
std::vector<Game*>* _activeGames;
void displayGamesList();
void refreshGamesList();
};

а также

class MyGameLayer : public cocos2d::CCLayer
{
private:
GameLobby* _gameLobby;
public:
GameLobby* getGameLobby();
};

а также

GameLobby* MyGameLayer::getGameLobby()
{
return _gameLobby;
}

Теперь к проблеме под рукой. Я хочу выполнить GamesMenu::refreshGamesList() который выглядит так:

void GamesMenu::refreshGamesList()
{
GameLobby* gameLobby = getGameLobby();
if (gameLobby) {
_activeGames = gameLobby->getActiveGames();
Game* game = _activeGames->at(0); // For debug purposes only - this game is NOT garbage
}
displayGamesList();
}

где

std::vector<Game*>* GameLobby::getActiveGames()
{
if (_loggedInPlayer) {
refreshActiveGames(_loggedInPlayer->GetPlayerToken());
} else {
refreshActiveGames("");
}
return &_activeGames;
};

а также std::vector<Game*> _activeGames является частным членом GameLobby,

Тем не менее, когда выполнение хитов displayGamesList(), дела идут довольно плохо

void GamesMenu::displayGamesList()
{
for (unsigned i = 0; i < _activeGames->size(); i++) {
Game* game = _activeGames->at(i); // The contents of game is garbage. Why?
std::string opponentName = game->GetOpponentName(); // This I don't even want to talk about
};
/* Supressed drawing stuff */
}

Когда я проверяю game в GamesMenu::refreshGamesList, содержание game кажется в порядке. Когда я проверяю game в GamesMenu::displayGamesList, содержимое всего мусора. Это как если бы элементы вектора указывали на неправильные данные или что-то в этом роде.

Может кто-нибудь помочь мне распутаться из этого беспорядка? Спасибо! 🙂

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]