|
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 14
|
||||||
Написал класс "Телефонная книга". Но при работе вылетает ошибка. помогите разобраться.05.01.2013, 02:37. Показов 5522. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|