-Поиск по дневнику

Поиск сообщений в lj_ru_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 09.09.2006
Записей:
Комментариев:
Написано: 4


Вопрос по STL

Воскресенье, 09 Октября 2016 г. 03:54 + в цитатник
Программа падает при попытке добавить в std::map данные. Код приводится ниже
Есть класс,в котором есть map. объявленный статическим полем.
static map<int, DataKeeper*> typeKeepers;
В сишнике оно инициализируется:
static map<int, DataKeeper*> typeKeepers;
Далее, есть вызов статического метода:
DataKeeper DataKeeper::getKeeper (int type)
{
cout<<"getDataKeeper enter"<<::iterator it;
map::iterator it;
DataKeeper* result;
it = keepers.find(type);
if (it == keepers.end())
{
int size;
result = new DataKeeper();
size = sizeof(result);
keepers[type] = result;
}
Проходя по шагам я увидел, что оно не находит значения(что вполне логично - это первый вызов) и пытается добавить указатель в map. Вот на этом добавлении оно и падает. Конкретно на этой строке. Компилятор MinGW.
В чем дело?
Заранее спасибо за любые конструктивные советы.
UPD. Всем спасибо, разобрался. Только сейчас добрался до сети, прошу прощения. Оказалось, вызов идёт раньше, чем map создаётся. После 3 лет на джаве отвык от того, что при обращении к не существующему объекту что-то ещё может дышать, если в этот объект ничего не писать.

https://ru-programming.livejournal.com/1359520.html


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку