|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
||||||
Написал класс "Телефонная книга". Но при работе вылетает ошибка. помогите разобраться.05.01.2013, 02:37. Показов 5634. Ответов 21
Метки нет (Все метки)
Доброго времени суток! Пацаны, дайте подсказку. Пишу телефонную книгу с классами и у меня возникла проблемка (чтение из файла по полям класса), а конкретнее вылетает Exeption. Я пытался дебажить, вроде все читает нормально , но при выводе вылет программы есть.
мой код ниже:
Заранее благодарен.
0
|
||||||
| 05.01.2013, 02:37 | |
|
Ответы с готовыми решениями:
21
Класс Телефонная Книга Телефонная книга. Ошибка доступа к памяти Помогите разобраться с ошибкой при работе с изображениями, пожалуйста |
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
|
| 05.01.2013, 07:56 | |
|
У тебя класс телефонная книга, а поля в нём описывают только одного человека, сделай отдельный класс Человек с этими полями, и отдельный класс Телефонная книга, в котором будет массив "человеков", глядишь и понятнее станет
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 05.01.2013, 15:23 [ТС] | |
|
Я не совсем понял). У меня в классе описаны поля с указателями на массивы строк. Память для них выделяет конструктор и удаляет деструктор. Я думаю, что у меня хватит памяти, что хранить несколько данных про человека считанных из файла, или я что - то неправильно понял?. Или может мне нужно сделать массив объектов?. Пацаны помогите, я запутался. Как мне можно по - другому распихать данные считанные из файла по-полям класса?
0
|
|
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
|
| 05.01.2013, 16:24 | |
|
массив символов это слово, у тебя если много адресатов, то соответственно много должно быть и слов, тебе нужен двумерный массив
Добавлено через 58 секунд а при твоей инициализации у тебя влезет всего лишь 1000 символов
1
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 05.01.2013, 16:47 [ТС] | |
|
Ясно, а как можно еще прочитать из файла данные и распределить их по полям класса не используя C-шные функции fgets() и strncpy()?. И еще, подскажите пожалуйста, как мне перегрузить операторы << и >> для записи и чтения из файла?. Возможно ли такое?
0
|
|
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
|
| 05.01.2013, 16:52 | |
|
так в коде уже перегружен оператор <<, просто замените на вывод в фаил
1
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 05.01.2013, 17:50 [ТС] | |
|
Я пытался, он Visual Studio 2010 мне подчеркивает. Подскажи пожалуйста, каким образом можно прочитать еще из файла?
0
|
|
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
||||||
| 05.01.2013, 22:39 | ||||||
|
Вот что я имел ввиду:
И зачем ты в методы класса передаешь указатель на объект?
1
|
||||||
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 06.01.2013, 01:08 [ТС] | |
|
Изначально я хотел сделать подсчет слов в файле и соответственно выделять память каждому массиву память под определенное количество слов и плюс завершающий нулевой символ, но потом передумал. А указатель на объект каждому методу класса я передаю для того, чтоб иметь доступ к полям класса. Думаю так. Если я не прав, тогда подправь меня пожалуйста)
0
|
|
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
|
| 06.01.2013, 01:52 | |
|
Методы класса и так имеют доступ к его полям
![]() Объекты передаются в дружественные функции, так как они не имеют неявного *this
1
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 06.01.2013, 20:20 [ТС] | |
|
Спасибо, что напомнил! Я теперь понял. А запись и чтение в бинарный файл делать с помощью fread() fwrite()?
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 08.01.2013, 21:34 [ТС] | |
|
Спасибо за помощь.) А каким способом лучше записать данные в бинарный файл? С помощью функций fread() и fwrite()? или другими способами.
0
|
|
|
Неэпический
|
|||
| 09.01.2013, 08:37 | |||
|
И вообще, зачем Вы мешаете в одной программе ввод/вывод C и C++? Кто Вас учил так делать? P.S. Английский Вам поможет в изучении
1
|
|||
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
||||||
| 09.01.2013, 11:33 [ТС] | ||||||
|
Просто я только недавно закончил изучение чистого С. А С++ только начал учить, вот поэтому я и сделал так! P.S. Я переделал чуток свой код и вместо использования функции fread() fwrite() я просто перегрузил операторы >> и << на чтение и запись в файл. Все работает нормально, только есть ошибка. Может поможешь?)
Добавлено через 1 минуту
Вот мой новый код. Сильно не ругайте. )
0
|
||||||
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
||||||
| 10.01.2013, 00:27 | ||||||
Но проблема вот в чем, здесь ты передаешь свой объект по значению, создается копия, когда функция отрабатывает запускается деструктор этого объекта (копии), а поскольку ты конструктор копирования не предусмотрел твои указатели копии ссылаются на ту же память, что и оригинал и деструктор копии освобождает память оригинала
1
|
||||||
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 10.01.2013, 01:01 [ТС] | |
|
Значит тогда мне нужно передавать объект по указателю или по ссылке?
0
|
|
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
||||||
| 10.01.2013, 01:25 | ||||||
|
Вот держи, так работает, но честно говоря мне он не нравится
![]()
1
|
||||||
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 10.01.2013, 01:32 [ТС] | |
|
Спасибо тебе большое, я понял как надо. А если не секрет, чего тебе не нравиться мой код? Мне нужно знать, просто не хочу писать гавнокод(а по-моему он сейчас у меня такой)(((. Я правильно тебя понял?
0
|
|
|
36 / 36 / 4
Регистрация: 29.08.2012
Сообщений: 59
|
|
| 10.01.2013, 01:43 | |
|
Я выше писал же. Структура странная, по моей логике класс "Телефонная книга" должен хранить "набор людей" ( массив объектов). Вот у тебя же в телефоне не хранятся в одной куче имена, телефоны? Для каждого человека отдельная ячейка, в которой отдельные поля для телефона, имени и т.д..
Хз как проще объяснить
1
|
|
|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
|
| 10.01.2013, 01:49 [ТС] | |
|
Я тебя понял. Мне вообще в голову пришла мысль сделать это все с помощью связного списка. Что скажешь?)
0
|
|
| 10.01.2013, 01:49 | |
|
Помогаю со студенческими работами здесь
20
Вылетает ошибка при работе с Access Вылетает ошибка при работе с функцией Copy
При работе с потоком данных SDI вылетает ошибка Постоянно вылетает ошибка при работе с INI файлами в Delphi 7 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|