Но когда объявляю поле типа THScrolMap, объявленным одним из вышеупомянутом способом программа падает в отладочном режиме. В режиме Release программа не падает, но и некий код работает не правильно. Но в этом режиме нельзя пошагово выполнить этот участок кода.
Никто не подскажет что я делаю не так.
Среда разработки MFC C++ MSVS 6 — требование к совместимости к системе, куда моя программа встраивается.
Re: Экземляр класса на шаблоне CMap как поле другого класса
Здравствуйте, Melamed, Вы писали:
M>Пишу наследник класса СТreeItem для расширения стандартного класса, управляющего стандартным органом управления TreeView на диалоговой понели.
M>Мне желательно в моем проектируемом классе иметь поле какого-либо из двух типов: либо
M>
Я бы отдал предпочтение второму варианту: std::map<>
M>Но когда объявляю поле типа THScrolMap, объявленным одним из вышеупомянутом способом программа падает в отладочном режиме. В режиме Release программа не падает, но и некий код работает не правильно. Но в этом режиме нельзя пошагово выполнить этот участок кода.
Обычно — в таких местах делаю логирование (сохраняю всё в лог-файл), затем анализурую что где и как отрабатывало.
Логирование ставлю часто — так, как будто это те же breakpoint-ы.
Это логирование — только на момент поиска источника проблемы!
M>Никто не подскажет что я делаю не так.
Здесь нет полной информации, поэтому что-либо сказать трудно...
M>Среда разработки MFC C++ MSVS 6 — требование к совместимости к системе, куда моя программа встраивается.
Хорошо, я не говорю про то, куда встраивается, но возможно же (для эксперимента) — запустить этот код на более поздней MSVS.
Там будет повторение ситуации или нет?
Здравствуйте, AlexGin, Вы писали:
AG>Здравствуйте, Melamed, Вы писали:
M>>Пишу наследник класса СТreeItem для расширения стандартного класса, управляющего стандартным органом управления TreeView на диалоговой понели.
M>>Мне желательно в моем проектируемом классе иметь поле какого-либо из двух типов: либо
M>>
AG>Я бы отдал предпочтение второму варианту: std::map<>
Я тоже первоначально остановился на втором варианте. Но когда он не прокатил, по описанной ниже проблеме, то решил использовать первый вариант как альтернативный, тем более, его рекомендуется использовать с MFC
M>>Но когда объявляю поле типа THScrolMap, объявленным одним из вышеупомянутом способом программа падает в отладочном режиме. В режиме Release программа не падает, но и некий код работает не правильно. Но в этом режиме нельзя пошагово выполнить этот участок кода. AG>Обычно — в таких местах делаю логирование (сохраняю всё в лог-файл), затем анализурую что где и как отрабатывало. AG>Логирование ставлю часто — так, как будто это те же breakpoint-ы. AG>Это логирование — только на момент поиска источника проблемы!
M>>Никто не подскажет что я делаю не так. AG>Здесь нет полной информации, поэтому что-либо сказать трудно...
Падение в отладочном режиме происходит в коде, сгенерированном средой
Как я понимаю, здесь происходит присвоение к полям, управляющим контролами диалоговым окнам, к соответствующим контрол элементам шаблона диалогового окна.
Мне желательно запустить мой код именно в отладочном режиме.
M>>Среда разработки MFC C++ MSVS 6 — требование к совместимости к системе, куда моя программа встраивается. AG>Хорошо, я не говорю про то, куда встраивается, но возможно же (для эксперимента) — запустить этот код на более поздней MSVS. AG>Там будет повторение ситуации или нет?
Хорошо попробую запустить проблемный код в 2015 студии. Но даже, если он и пойдет без проблем, это не снимет проблемы реализации в VS 6 из-за проблем обратной совместимости сред программирования Microsoft'а
Re[3]: Экземляр класса на шаблоне CMap как поле другого класса
Да мне пришлось переопределить метод OnInitDialog() Вызов СDialog::OnInitDialog() сделал в начале соответствующего метода моего класса диалоговой панели.
Спасибо проблема решена. Если честно, я не понял, в чем было дело. Я закомментировал все сообщения в карте сообщений моего класса, потом их раскомментировал. Сначала компелятор заругался. Но я нашел, ошибку, что случайно удалил закрывающую фигурную скобку у деструктора. Ее поставил, и все заработало. Прямо какие-то чудеса
Re[5]: Экземляр класса на шаблоне CMap как поле другого клас
Здравствуйте, Melamed, Вы писали:
M>Да мне пришлось переопределить метод OnInitDialog() Вызов СDialog::OnInitDialog() сделал в начале соответствующего метода моего класса диалоговой панели.
Это важный момент!
M>Спасибо проблема решена. Если честно, я не понял, в чем было дело. Я закомментировал все сообщения в карте сообщений моего класса, потом их раскомментировал.
Обычно — причина не в этом.
M>Сначала компелятор заругался. Но я нашел, ошибку, что случайно удалил закрывающую фигурную скобку у деструктора. Ее поставил, и все заработало. Прямо какие-то чудеса
А как компилятор — не ругался, когда у деструктора было невалидное тело?
Обычно такое — не позволит запустить приложение.