|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
объекты класса TREE03.11.2012, 22:12. Показов 2450. Ответов 12
Метки нет (Все метки)
в общем, есть класс TREE с кучей переменных и несколькими методами. суть в том, что если в main() создать разные объекты данного класса любым способом, в частности например, созданием в цикле динамического объекта TREE * ps = new TREE, в конце итерации высвобождая динамическую память delete ps, или обычный массив объектов TREE obj[R] и работая с ними в цикле (или как в данный момент у меня - динамический массив объектов), то РЕЗУЛЬТАТ ОДИН во всех случаях: первый объект - нормальный, остальные - кривые. Например (не вдаваясь в подробности работы), метод int TREE::create_tree_reg() должен перед "return P" вывести cout<<"количество выпавших чисел: "<<Q<<endl; для первого всё нормально, а для второго и остальных объектов это происходит в одном случае из чёрт знает скольки. В общем, помогите, без понятия, в чём косяк (main.cpp, строка 95, писал на dev-cpp 4.9.9.2)
0
|
|
| 03.11.2012, 22:12 | |
|
Ответы с готовыми решениями:
12
Классы и объекты в С++, компонента класса и экземпляр класса
|
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 03.11.2012, 22:34 [ТС] | |
|
З.Ы. Ещё раскомментируйте там
sprintf(tmpchr, "%d", ps->P); if (pFile1 != NULL) {fputs(tmpchr,pFile1); fputs(" ",pFile1);} sprintf(tmpchr, "%f", ps->alpha); if (pFile2 != NULL) {fputs(tmpchr,pFile2); fputs(" ",pFile2);} программа вылетит на этом моменте. что не так с дозаписью в текстовый файл?
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 04.11.2012, 21:37 | |
|
У вас это компилируется?
0
|
|
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 05.11.2012, 01:46 [ТС] | |
|
да. чем компилируйте?
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 05.11.2012, 01:53 | |
|
Разным. А вы Dev-cpp?
0
|
|
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 05.11.2012, 01:58 [ТС] | |
|
dev-cpp 4.9.9.2. компилировать надо main.
Добавлено через 3 минуты а что пишет-то?
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||
| 05.11.2012, 02:03 | ||
|
0
|
||
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 05.11.2012, 02:20 [ТС] | |
|
смысл в том, что остальные два файла просто подключаются. с main'ом они тоже компилируются. у меня ошибок, предупреждений не выдаёт. версия другая. и project.exe никакой, объектные файлы в процессе не создаются, только main.exe. не первый раз так пишу.
Добавлено через 2 минуты не вижу если честно никаких повторных объявлений, например. Добавлено через 5 минут а подключается всё просто: в файле с вынесенными за класс методами делаем инклюд файла с самим классом (помимо него там ещё разные вещи могут быть, не запрещается), а в файле с функцией main инклюд methods. нажимаем, находясь на нём F9. и никаких прожектов создавать не надо.
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||||||||
| 05.11.2012, 04:09 | |||||||||||||
|
Добавлено через 3 минуты Да. Без проекта работает. Добавлено через 42 минуты В куске, где запись в файл, что за указатель ps? Добавлено через 16 минут
После записи в файл сразу сделайте:
0
|
|||||||||||||
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 05.11.2012, 11:19 [ТС] | |
|
alsav22, ps был, когда каждый раз создавался и потом удалялся динамический объект, забыл исправить. теперь там будет "obj[i]."
char * tmpchr = new char[10]. так? а что по поводу кривости самих объектов? заметили, что нормально работает только obj1, в остальных, например, вместо нормального количества узлов функция возвращает 6-ти значное число с потолка.
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||
| 05.11.2012, 12:10 | ||||
|
И это не забудьте. Добавлено через 54 секунды Добавлено через 5 минут В dev-cpp при отладке можно как-то следить за значениями переменных? Среда для меня незнакомая, а в Студии, номер с такой компиляцией (без проекта) не проходит. Добавлено через 23 минуты У вас в трёх функциях возврат значения не при всех путях происходит: int create_tree_nereg_debug(), int create_tree_nereg(), int create_tree_reg(). Возврат там прописан в конце: else if (z > Nmax) {cout<<"количество выпавших чисел: "<<Q<<endl; return P;}, а если z <= Nmax, то вообще ничего не возвращается.
1
|
||||
|
28 / 10 / 1
Регистрация: 26.04.2010
Сообщений: 457
|
|
| 05.11.2012, 12:34 [ТС] | |
|
alsav22, там два случая: выпавшее второе по счёту число оказалось равным нулю - return 0; z стало больше Nmax (а такое рано или поздно будет, т.к. инкрементируется P на каждой итерации) - return P; дело в том что первый объект, каким бы он ни был, работает всегда нормально, а остальные при выполнении тех же самых действий - ненормально. дело в самих объектах, как мне кажется.
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||
| 05.11.2012, 22:55 | ||||
|
Добавлено через 17 минут Провёл несложный эксперимент. В функции create_tree_nereg() поставил точку останова перед return, а на входе в функцию сделал cout, чтобы сравнить количество заходов в функцию с количеством выходов по return. При пяти заходах в функцию - только два выхода по return. Добавлено через 9 часов 40 минут
0
|
||||
| 05.11.2012, 22:55 | |
|
Помогаю со студенческими работами здесь
13
Объекты класса Объекты абстрактного класса
Указатели на объекты класса
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|