5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
||||||
1 | ||||||
Запись в файл, чтение из файла, сохранени в файл, не работают эти функции07.07.2019, 01:03. Показов 5065. Ответов 21
Метки нет (Все метки)
Здравствуйте.
Не работает методы: Save() — сохранение фигуры (объекта) в файл, Load() — считывание фигуры (объекта) из файла. Я сделал проверку, что если что-то не так, то выходит ошибка работы с файлом, вот она все время и выходит и у меня не работают эти методы. Напишите, как правильно сделать эти методы. Также я не понимаю вот это: В main создайте массив фигур, сохраните фигуры в файл, загрузите в другой массив и отобразите информацию о каждой из фигур. вот что подчеркнул тоже не ясно, как реализовать. Зачем опять сохранять, если есть методы Load и Save? Вот собственно код, сделал пока только первую фигуру - это квадрат, и пытаюсь сначала разобраться с ним.
0
|
07.07.2019, 01:03 | |
Ответы с готовыми решениями:
21
Реализовать функции: чтение из файла запись в файл Открытие и чтение файла, запись в файл, помещение результата в файл Запись в файл и чтение из файла Чтение из файла, запись в файл |
Модератор
13508 / 10758 / 6412
Регистрация: 18.12.2011
Сообщений: 28,725
|
|
07.07.2019, 09:30 | 2 |
Вы пытаетесь открыть существующий файл, который находится в ТЕКУЩЕЙ директории.
Т.о. 1. Нельзя так создать новый файл 2. текущей является папка проекта при запуске программы из среды программирования, а не папка с .exe файлом.
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 09:35 | 3 |
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 09:42 [ТС] | 4 |
вопрос не понял
Добавлено через 1 минуту А как правильно сделать?
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 09:50 | 5 |
От вас хотят "реализацию" полиморфизма. Т. е. нужен не массив фигур, а массив указателей на базовый класс. Сохранить не сложно, просто проходитесь и вызываете виртуальный метод для каждой фигуры, а вот что бы считать в такой же массив, придется написать функцию например, которая идентифицирует тип записанного объекта, считывает его(размещая в динамической памяти) и возвращает указатель на базовый класс. Поэтому я не догоняю смысл виртуального метода Load(), он должен вызываться для уже созданного объекта.
Добавлено через 1 минуту У вас функция Save() читает файл?
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 10:05 [ТС] | 6 |
Я просто смотрел уроки и там они делали также и у них получалось, а у меня нет.
Добавлено через 1 минуту Да она все делает, просто я не знаю, как сделать чтобы только сохранять в файл. Добавлено через 1 минуту А в задании написано: Добавлено через 1 минуту Вызывать его, как я это делал.
0
|
Модератор
13508 / 10758 / 6412
Регистрация: 18.12.2011
Сообщений: 28,725
|
||||||
07.07.2019, 10:09 | 7 | |||||
Можете вручную создать пустой файл в текущей папке, тогда, может, и получится.
Или по этой ошибке открыть файл только на запись, закрыть и снова открыть
Здесь потерялось отрицание if ( !fs.is_open() )
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 10:12 [ТС] | 8 |
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 10:13 | 9 |
В задании глупость написана, вы не можете создать экземпляр абстрактного класса, вы не можете создать массив разных типов
Вызывать не проблема, смысл делать его виртуальным? Можно конечно в файле сначала записать типы всех фигур, потом записать в том же порядке данные этих фигур, а читать так: считываем типы и формируем массив указателей на не инициализированные объекты, затем проходимся по массиву и для каждого вызываем виртуальный метод Load(), но это то еще извращение, имхо
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 10:20 [ТС] | 10 |
Так задания не я придумываю, а место, где я учусь. У нас была тема: Виртуальные методы (абстрактный класс) вот по этому надо делать так, как в задании.
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
||||||
07.07.2019, 10:54 | 11 | |||||
Anonymous4722, можно как то так, остальные фигуры сами реализуете
Кликните здесь для просмотра всего текста
0
|
Модератор
13508 / 10758 / 6412
Регистрация: 18.12.2011
Сообщений: 28,725
|
|
07.07.2019, 11:08 | 12 |
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 11:09 [ТС] | 13 |
Да я догадался и все заработало. Но надо улучшить программу и сделать четко, чем я и займусь.
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 20:16 [ТС] | 14 |
Я сделал, а у меня выводит ошибку. И векторы я не проходил еще. Как это сделать для след фигур? Классы я организовал, а в main выводит ошибки: требуется спецификатор типа.
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 20:57 | 15 |
Показывай что сделал
тогда динамический массив, а размер массива нужно записывать в файл
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
||||||
07.07.2019, 21:18 [ТС] | 16 | |||||
Кликните здесь для просмотра всего текста
Добавлено через 2 минуты Это могу сделать, но можно и с векторами. Тут надо уже делать 4 вектора чтобы заработало или что? Не понятно. Наверное динамический массив сделаю, потому что с вектором не понимаю, как делать надо. Или лучше покажите, как с вектором сделать правильно еще одну фигуру чтобы я имел представление, как пользоваться векторами с несколькими классами.
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 21:26 | 17 |
А все потому, что
using namespace std; . Убери #include <Windows.h>Добавлено через 1 минуту размерЫ , а у тебя Rectangle это копия Square. Зачем конструктор по умолчанию в базовый класс прилепил?
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
|
07.07.2019, 21:29 [ТС] | 18 |
Потому что он ругался на то что нет конструктора по умолчанию.
Добавлено через 29 секунд Убрал и вроде как нет ошибок, но почему она возникла из-за Windows.h??
0
|
6107 / 3462 / 1406
Регистрация: 07.02.2019
Сообщений: 8,803
|
|
07.07.2019, 21:40 | 19 |
Так же внимательно посмотри, что в моем коде участок, ответственный за изначальную инициализацию и запись в файл, локализован фигурными скобками, зачем удалил?
Добавлено через 43 секунды А где ты его вызываешь? Удали. Все равно не реализован. Добавлено через 8 минут Вот почему https://msdn.microsoft.com/en-... p/dd162898
0
|
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
|
||||||
07.07.2019, 21:41 [ТС] | 20 | |||||
Удалил, сейчас пытался добавить новую фигуру вот так:
Кликните здесь для просмотра всего текста
И выводит не те значения
0
|
07.07.2019, 21:41 | |
07.07.2019, 21:41 | |
Помогаю со студенческими работами здесь
20
Чтение из файла и запись в файл Чтение из файла/Запись в файл Запись в файл и чтение из файла Запись в файл, чтение из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |