Я получаю странный сбой, когда пытаюсь взаимодействовать с картой в этом конкретном классе.Когда я пытаюсь вызвать clear () или даже begin () на карте, происходит сбой.Я ничего не добавил к карте, на данный момент ничего не коснулось.
Код, о котором идет речь:
spriteMap_.clear();
if (!spriteMap_.empty())
{
SpriteMap::const_iterator end = spriteMap_.end();
for (SpriteMap::const_iterator it = spriteMap_.begin(); it != end; ++it)
{
it->second->draw(screen);
}
}
Даже странно, что это не уникально для карты, нона любые карты в этом конкретном классе.У меня есть другая карта, которая также не затрагивается до этого момента (я проверил ее с явным вызовом в этой функции).
Когда я использую intelli-sense на картах, оба показывают себя с тоннами значений уже вих и вызов empty () возвращает false.Аналогично, size () возвращает ненулевой результат.
Информация: я компилирую в Visual Studios 2010 и создаю ссылки на SDL.
Любая помощь приветствуется.
Изменить (подробнее):
В моем заголовке есть эта строка:
private:
std::map spriteMap_;
И единственный код, который ударил - это функция Iпоказал тебе.У меня есть другой код, но точка останова для функции никогда не срабатывает (я не вызываю эту функцию).
Но вот она:
Sprite* SpriteManager::createSprite(std::string fileName)
{
...
Sprite* newSprite = &Sprite(nextSpriteId_, this, image);
nextSpriteId_++;
spriteMap_[newSprite->id_] = newSprite;
return newSprite;
}
Исправлено:
Мораль этой истории такова: никогда не делай что-то вроде этого:
ObjPtr* objPtr = &Obj();