Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 17:40   #1
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию Не добавляется элемент в map

Не добавляется элемент в map (контейнер из стандартной библиотеки)

Код:
void ObjsRefresh(Objs Objects) // map<int, TGameObj*> Objects
{
  for(Objs::iterator i = Objects.begin(); i!=Objects.end(); i++)
  {
    while(i->second->type == tdestroyed)
    {
      delete i->second;
      Objs::iterator j = i;
      if(i!=Objects.end())
      {
        i++;
        Objects.erase(j);
      }
      else
      {
        Objects.erase(j);
        return;
      }
    }

    i->second->Move();
    TGameObj* Bullet = NULL;
    if((Bullet = i->second->Fire()) != NULL) //Fire() возвращает *TGameObj
    {
      Objects[GetNewHandle()] = Bullet; //не работает, 
      //GetNewHandle() всегда возвращает уникальное значение 
      //Objects.insert(make_pair(GetNewHandle(), Bullet));// тоже не работает
    }
  }
}
Никак не хочет работать добавление элемента. (Компилируется, ошибок не выдает, в отладчике эта строка выполняется, но не добавляет)
Мистика какая-то, замучился уже искать в чем дело, помогите кто-нибудь!
-LeV- вне форума Ответить с цитированием
Старый 21.02.2011, 01:01   #2
daunito
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 25
По умолчанию

Код:
Objects.insert(make_pair(GetNewHandle(), Bullet));
Чему равны GetNewHandle() и Bullet перед вставкой? Можно вставлять так
Код:
Objects.insert( pair<int,TGameObj*>(GetNewHandle(),Bullet) );
daunito вне форума Ответить с цитированием
Старый 21.02.2011, 10:23   #3
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от daunito Посмотреть сообщение
Чему равны GetNewHandle() и Bullet перед вставкой? Можно вставлять так
Код:
Objects.insert( pair<int,TGameObj*>(GetNewHandle(),Bullet) );
они равны некоторому уникальному ненулевому числу int и опять же ненулевой указатель на объект TGameObj

так тоже не работает...
-LeV- вне форума Ответить с цитированием
Старый 22.02.2011, 19:36   #4
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

Блин, глупейшая ошибка, надо было передавать указатель на map, спасибо за помощь =)

Последний раз редактировалось -LeV-; 22.02.2011 в 23:34.
-LeV- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не добавляется информация в базу :( Claster PHP 19 28.01.2011 13:34
Не добавляется запись в базу Provoking Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 4 04.01.2011 15:21
Не добавляется элемент в очередь Дырдин Общие вопросы C/C++ 2 22.04.2010 07:31
map Vladimir_D Общие вопросы C/C++ 1 17.10.2009 13:37
Не добавляется SqlDataAdapter на форму xOKkei Общие вопросы .NET 1 24.02.2009 17:01