Воскресенье, 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
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-