Информация об изменениях

Сообщение Re: Экземляр класса на шаблоне CMap как поле другого класса от 30.07.2016 13:27

Изменено 30.07.2016 13:30 AlexGin

Здравствуйте, Melamed, Вы писали:

M>Пишу наследник класса СТreeItem для расширения стандартного класса, управляющего стандартным органом управления TreeView на диалоговой понели.


M>Мне желательно в моем проектируемом классе иметь поле какого-либо из двух типов: либо


M>
M>typedef CMap<HTREEITEM,HTREEITEM,int,int> THScrollMap
M>


M>либо


M>
M>typedef std::map<HTREEITEM,int> THScrollMap
M>


Я бы отдал предпочтение второму варианту: std::map<>

M>Но когда объявляю поле типа THScrolMap, объявленным одним из вышеупомянутом способом программа падает в отладочном режиме. В режиме Release программа не падает, но и некий код работает не правильно. Но в этом режиме нельзя пошагово выполнить этот участок кода.

Обычно — в таких местах делаю логирование (сохраняю всё в лог-файл).

M>Никто не подскажет что я делаю не так.

Здесь нет полной информации, поэтому что-либо сказать трудно...

M>Среда разработки MFC C++ MSVS 6 — требование к совместимости к системе, куда моя программа встраивается.

Хорошо, я не говорю про то, куда встраивается, но возможно же (для эксперимента) — запустить этот код на более поздней MSVS.
Там будет повторение ситуации или нет?
Re: Экземляр класса на шаблоне CMap как поле другого класса
Здравствуйте, Melamed, Вы писали:

M>Пишу наследник класса СТreeItem для расширения стандартного класса, управляющего стандартным органом управления TreeView на диалоговой понели.


M>Мне желательно в моем проектируемом классе иметь поле какого-либо из двух типов: либо


M>
M>typedef CMap<HTREEITEM,HTREEITEM,int,int> THScrollMap
M>


M>либо


M>
M>typedef std::map<HTREEITEM,int> THScrollMap
M>


Я бы отдал предпочтение второму варианту: std::map<>

M>Но когда объявляю поле типа THScrolMap, объявленным одним из вышеупомянутом способом программа падает в отладочном режиме. В режиме Release программа не падает, но и некий код работает не правильно. Но в этом режиме нельзя пошагово выполнить этот участок кода.

Обычно — в таких местах делаю логирование (сохраняю всё в лог-файл), затем анализурую что где и как отрабатывало.
Логирование ставлю часто — так, как будто это те же breakpoint-ы.
Это логирование — только на момент поиска источника проблемы!

M>Никто не подскажет что я делаю не так.

Здесь нет полной информации, поэтому что-либо сказать трудно...

M>Среда разработки MFC C++ MSVS 6 — требование к совместимости к системе, куда моя программа встраивается.

Хорошо, я не говорю про то, куда встраивается, но возможно же (для эксперимента) — запустить этот код на более поздней MSVS.
Там будет повторение ситуации или нет?