![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Доброго времени суток!
У меня есть стандартная очередь из указателей на TTreeNode (не суть важно). Я заношу указатели на узлы дерева в очередь, затем извлекаю и вывожу в файл. Во вот дела. Где-то при этих манипуляциях теряются те указатели, которые храняться в очереди, поэтому, когда я сохраню в файл - вместо имен узлов дерева вижу на форме иероглифы. Я думал, что это при операции очереди pop(), но нашел инфу, что нет - деструктор поп не вызывает. Тогда я попробовал сделать очередь из указателей на эти указатели. Вроде бы логично - и ничего не должно потеряться. Но! Ничего не получается - при извлечении из очереди элемента - у него пустые поля..... Вот участки кода, которые я описал:
Что я делаю не так? -------------------- Don't let the system get you down. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
||||
|
||||
Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
math64, да, а как с этим бороться?
-------------------- Don't let the system get you down. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Храни в очереди простые указатели, зачем двойные ?
|
|||
|
||||
Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Я же написал, что тогда в дереве будут иероглифы (Builder, компонент TTreeVeiw). И если написать такую штуку
То второй шоу месседж выбивает, т.к. где-то этот указатель (который я хранил в очереди) затерся. И так для всех узлов. -------------------- Don't let the system get you down. |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Ты добавлял/удалял узлы из дерева? Тогда да, память под узлы дерева могли выделиться заново,
но в етом случае доп. уровень указателей не поможет, и как мне помнится, в Билдере этого не происходит Для очереди указатель - всё равно, что целое соответствующего размера, она его портить не должна. И вообще, зачем нужна очередь? В TraverseTreeOnSaveTree передай вместо ссылки на очередь ссылку на ostream и выводи узлы непосредственно там. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |