| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Запись класса в файл (Borland C++ 3.1) |
| Автор: DjoNIK 4.6.2007, 23:33 | ||
| Доброго времени суток! Я так понял, что классы fstream, ifstream и ofstream есть в этом компиляторе, но как с ними работать я не знаю, поэтому выбрал класический C-шный вариант работы с онными. Но мой код при PutDB() заносит какую-то совершенно "левую" информацию в файл, и, возможно по этой причине (или по другой), GetDB() выдаёт также что-то невообразимое. Помогите понять в чём проблема!
|
| Автор: nerezus 5.6.2007, 08:18 |
| Ты хоть знаешь, что fwrite делает? У тебя же вместо буффера объект!! P.S. и что, даже компилер ошибки не выдает? P.P.S. Про сериализацию слышал? |
| Автор: EnergoHokum 5.6.2007, 08:25 |
| По моему, сериализация объектов классов - очччень небезопасное занятие. Что случится, если сериализован объект с открытыми дескрипторами (файлов или чего ещё), а при восстановлении объекты, на которые указывали дескрипторы, удалены? Явно ничего хорошего. Ну, в качестве Експеримента можно поиграть, но в реальный проект я бы побоялся такое вводить. |
| Автор: nerezus 5.6.2007, 08:39 |
| EnergoHokum, ну дык нужно при сериализации объекта сериализовывать объекты в нем, например агрегированный объект ФС. Добавлено через 1 минуту и 27 секунд Да или прросто при сериализации закрываем хендл файла и сохраняем имя. При обратном процессе - открываем файл на прежней позиции. |
| Автор: math64 5.6.2007, 08:47 | ||||
class player не имеет виртуальных методов, поэтому можно применить fwrite()/fread(), но лучше
Кроме того лучше не смешивать ввод/вывод по stdio и iostream в пределах одного файла (в вашем случае - консоль) |
| Автор: EnergoHokum 5.6.2007, 09:05 |
| Всё равно, сериализация объектов компилируемого языка - неуютно как-то (может, я и зря паникую) |
| Автор: DjoNIK 5.6.2007, 11:58 | ||||||||
Разве указатель не сойдёт за буфер???
Нет, по моему и не должен!
Нет. |