Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как записать на диск данные обьекта, содержащего внутри другие обьекты(сериализация)

5.3K
19 сентября 2006 года
!Волк
95 / / 19.07.2006
Пишу приложение на С\С++, могу использовать тока WinApi и STL.
Есть массив обьектов разных типов. В обьектах могут содержаться другие обьекты. Каким образом можно реализовать функцию, чтоб разом все обьекты из этого массива в файл записала? Кто сталкивалься, подскажите хоть что нибудь. Или ссылку на какую нить нормальную статью дайте. Сам пытался искать, но везде пишут примеры на C# или Jawa, а я их не знаю.((
14K
19 сентября 2006 года
wrap
35 / / 02.06.2006
Вообще то по определению массив не может содержать объекты разных типов. Скорее всего он содержит указатели на объекты разных типов. В таком случае следует для объектов каждого типа определить виртуальную функцию, которая будет обеспечивать сохранение данных этого объекта в файл. Для сохранения всех объектов надо пробежаться по массиву и вызвать для каждого элемента эту функцию.
5.3K
19 сентября 2006 года
!Волк
95 / / 19.07.2006
Ну массив, да содержит указатели на обьекты.
Писать для каждого обьекта свою функцию для сохранения-это конечно выход. Но у меня стоит конкретно задача, осуществить сохранение обьектов без написания для каждого из них своей функции. Прогу делают несколько людей. Обьектов буит куча и делать буду их не я. Мне нужно осуществить их сохранение и и чтение их файла.
240
19 сентября 2006 года
aks
2.5K / / 14.07.2006
Создай базовый интерфейс, для сохранения, от которого все будут наследоваться и переопределять функцию сохранения. Так собственно это и делается.
Можешь еще воспользоваться реализацией сериализации в библиотеке boost.
5.3K
19 сентября 2006 года
!Волк
95 / / 19.07.2006
[QUOTE=aks]Создай базовый интерфейс, для сохранения, от которого все будут наследоваться и переопределять функцию сохранения. Так собственно это и делается.
Можешь еще воспользоваться реализацией сериализации в библиотеке boost.[/QUOTE]
Я вот тоже , прочитав тока что пару статей по диагонали, решил что надо делать базовый класс и от него наследовать все остальное. Далее, я думаю сделать в базовом классе одну виртуальную функцию и функции для обработки каждого из встроенных типов и STL. Потом , в каждом из наследуемых классов, описываем функцию, в котрой всего навсего перечислить через функции(которые в базовом классе опишем) обработки встроенных типов все поля конкретного класса. Так нормально буит?)
14K
19 сентября 2006 года
wrap
35 / / 02.06.2006
Если для сериализации планируешь использовать потоки ввода-вывода, то дополнительная работа по разработке функций обработки встроенных типов не понадобится. Тогда можно перегрузить для базового интерфейса оператор вывода в поток (можно сделать только глобальной friend-функцией), который будет заниматься вызовом виртуальной функции сериализации соответствующего объекта.
5.3K
19 сентября 2006 года
!Волк
95 / / 19.07.2006
[QUOTE=wrap]Если для сериализации планируешь использовать потоки ввода-вывода, то дополнительная работа по разработке функций обработки встроенных типов не понадобится. Тогда можно перегрузить для базового интерфейса оператор вывода в поток (можно сделать только глобальной friend-функцией), который будет заниматься вызовом виртуальной функции сериализации соответствующего объекта.[/QUOTE]
Можно конечно, но записывать я буду с помощью WinApi.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог