GCC нормально компилит и выполняет, VS Express компилит, но при за пуске выдает:
Debug Assertion Failed!
Expression map/set iterator not dereferencable.
Подскажите в чем затык и как быть? Спасибо!
Здравствуйте, Sempsey, Вы писали:
S>Dir* Dir::add_subdir(const string& name){ S> dir_t::iterator it; S> bool inserted; S> pair<dir_t::iterator,bool>(it,inserted)=subdirs.insert(pair<string,Dir*>(name,static_cast<Dir*>(NULL))); S>GCC нормально компилит и выполняет, VS Express компилит, но при за пуске выдает: S>Debug Assertion Failed! S>Expression map/set iterator not dereferencable. S>Подскажите в чем затык и как быть? Спасибо!
Выделено.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, dilmah, Вы писали:
S>> pair<dir_t::iterator,bool>(it,inserted)=subdirs.insert(pair<string,Dir*>(name,static_cast<Dir*>(NULL)));
D>Ээ.. ты С++ с перлом не перепутал?
D>std::pair<dir_t::iterator, bool> x = ... D>далее используй x.first и x.second
О чорт Спасибо! Так изначально и было. На самом деле для меня непонятно почему необходимо кастовать NULL, gcc сжевал все без кастинга.
Здравствуйте, Sempsey, Вы писали:
S>>> pair<dir_t::iterator,bool>(it,inserted)=subdirs.insert(pair<string,Dir*>(name,static_cast<Dir*>(NULL))); D>>Ээ.. ты С++ с перлом не перепутал? D>>std::pair<dir_t::iterator, bool> x = ... D>>далее используй x.first и x.second S>О чорт Спасибо! Так изначально и было. На самом деле для меня непонятно почему необходимо кастовать NULL, gcc сжевал все без кастинга.
Видимо где-то NULL переопределён так:
#define NULL ((void*)0)
А надо:
#define NULL 0
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]