Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
#1

Вопросы сериализации - C++

12.11.2012, 20:32. Просмотров 920. Ответов 22
Метки нет (Все метки)

 Комментарий модератора 
Ноги здесь: Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию


Цитата Сообщение от silent_1991 Посмотреть сообщение
НеСказочник, если вы возьмёте свой код и замените в нём слово class на struct, то увидите, что свойство сохраняется. Сложные данные, требующие собственной логики копирования, никогда правильно скопированы не будут, ни в структуре, ни в классе.
Кстати, по этой теме. А если мне надо загнать довольно сложный класс в массив байт, что бы потом его сохранить в файл. Есть ли какие-то стандартные инструменты кроме класса для работы с JSON. JSON просто текстом сохраняет, а там может быть много разных данных, некрасиво получится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 20:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопросы сериализации (C++):

Метод сериализации - C++
Помогите найти пинфу по Методу сериализации

Поясните по сериализации - C++
В boost::serialization Нужно слить мап в файл. Простите за тупой вопрос, но нужно прописывать сериализацию для каждого класса...

Ищу литературу по интерфейсам, делегатам, сериализации и т.п. применительно к C++ - C++
Добрый вечер. Подскажите, есть ли какая литература по интерфейсам, делегатам, сериализации и т.д., как и когда их применять на практике, но...

Вопросы по C++ - C++
Хочу учиться писать программы на C++, и у меня несколько вопросов 1) Этот язык такой же сложный, как Ассемблер? Например, Паскаль мне...

Вопросы по C++ - C++
Всем привет! У меня появилось несколько вопросов по C++, был бы рад, если бы Вы помогли бы мне хотя бы из одним из них. 1) Как...

Вопросы по C++ - C++
Пожалуй начну) Можно ли в С++, обьявить определенному элементу массива определенное значение, как можно в пхп? Приведу пример: php:...

22
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
12.11.2012, 20:34 #2
НеСказочник, нет, стандартных, к сожалению, нет. Можно воспользоваться, например, boost::serialization. Али закатать рукава и написать собственный сериализатор (и убиться ). Да и на счёт класса для работы с JSON что-то я сомневаюсь. Нет такого в стандарте.
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
12.11.2012, 20:35  [ТС] #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
НеСказочник, нет, стандартных, к сожалению, нет. Можно воспользоваться, например, boost::serialization. Али закатать рукава и написать собственный сериализатор (и убиться ). Да и на счёт класса для работы с JSON что-то я сомневаюсь. Нет такого в стандарте.
А я, вроде бы, находил, правда в .Net
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
12.11.2012, 20:37 #4
НеСказочник, ну, дотнет к языку С++ мало отношения имеет. И я почти уверен, что там есть своя сериализация.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 20:37 #5
Цитата Сообщение от НеСказочник Посмотреть сообщение
А я, вроде бы, находил, правда в .Net
ну .Net и c++ далеко друг от друга
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
12.11.2012, 20:38  [ТС] #6
Цитата Сообщение от Croessmah Посмотреть сообщение
ну .Net и c++ далеко друг от друга
Visual C++ 2008
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
12.11.2012, 20:39 #7
НеСказочник, ещё раз, язык С++ и франкенштейн майкрософтовский далековато друг от друга.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 20:39 #8
Цитата Сообщение от НеСказочник Посмотреть сообщение
Visual C++ 2008
А причем здесь это? C++ и C++/CLI(.Net) разные вещи
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
12.11.2012, 20:41  [ТС] #9
Цитата Сообщение от Croessmah Посмотреть сообщение
А причем здесь это? C++ и C++/CLI(.Net) разные вещи
Мне главное экземпляр класса сохранить. Целиком. Что бы потом можно было создать другой экземпляр этого же класса и забить в него всю ту же информацию.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
12.11.2012, 20:42 #10
НеСказочник, вам надо сохранять экземпляры разных классов? Или задача про конкретный класс/небольшую иерархию? Если так, можно действительно свою простенькую сериализацию замутить.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 20:44 #11
Цитата Сообщение от НеСказочник Посмотреть сообщение
Что бы потом можно было создать другой экземпляр этого же класса и забить в него всю ту же информацию.
Может легче "закатать" в фаил значения всех полей класса, а потом их загружать?
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
12.11.2012, 20:45  [ТС] #12
Цитата Сообщение от silent_1991 Посмотреть сообщение
НеСказочник, вам надо сохранять экземпляры разных классов? Или задача про конкретный класс/небольшую иерархию? Если так, можно действительно свою простенькую сериализацию замутить.
Есть класс, в котором хранится куча полей, среди которых есть списки экземпляров других классов, которые тоже собою не просты. Классы, естественно, известны и при сохранении и при открытии. Я только не знаю как такую кучу всего запихнуть в массив байт, что бы потом записать в файл или отправить в stream.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
12.11.2012, 20:48 #13
Croessmah, если поля нетривиальные и сами являются классами со сложной внутренней структурой - не легче. Если же речь о простом переводе класса в бинарный поток, то об этом и речи быть не может в общем случае и с сохранением независимости от компилятора, ведь если используется виртуальное наследование или позднее связывание, одному компилятору известно, где в классе будет лежать таблица виртуальных функций/классов и прочие тонкости реализации.

Добавлено через 1 минуту
НеСказочник, тогда действительно лучше воспользоваться сторонними реализациями алгоритмов сериализации, бустовской, например. Аль в дотнете пошарить, я уверен, там это есть (в шарпе сериализация точно есть).
0
НеСказочник
58 / 46 / 8
Регистрация: 12.11.2012
Сообщений: 356
Записей в блоге: 2
12.11.2012, 20:50  [ТС] #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
Croessmah, если поля нетривиальные и сами являются классами со сложной внутренней структурой - не легче. Если же речь о простом переводе класса в бинарный поток, то об этом и речи быть не может в общем случае и с сохранением независимости от компилятора, ведь если используется виртуальное наследование или позднее связывание, одному компилятору известно, где в классе будет лежать таблица виртуальных функций/классов и прочие тонкости реализации.
И компилятор и программа и всё остальное одинаковое. Просто я хочу сегодня, например, сохранить сессию работы с программой, целиком как есть. А при следующем запуске загрузить. Эта штука описывается классом, в котором так же много чего другого. И это всё я в последствии буду дописывать, но переделывать каждый раз проседуру сохранения совершенно не хочется, хотя я понимаю, что в новых версиях этого класса старые открываться не будут из-за разных членов класса.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 20:54 #15
Цитата Сообщение от silent_1991 Посмотреть сообщение
Если же речь о простом переводе класса в бинарный поток, то об этом и речи быть не может в общем случае и с сохранением независимости от компилятора
А с динамически выделенными объектами сериализатор справиться(точнее десериализатор)?
0
12.11.2012, 20:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 20:54
Привет! Вот еще темы с ответами:

Вопросы!!! - C++
прошу посоветовать что почитать чтобы ответить на следующие вопросы!!(можно ответить ссылками) если будут промеры по теме буду рад:) ...

Вопросы - C++
Здравствуйте! 1. Как сделать так, чтобы программа (функция (strlen() ) не считала пробелы? 2. Можно ли упростить (сократить)...

Вопросы по С++ - C++
1) Чем отличается const *char от сhar при использовании в программах? 2) Тип void * так и не понял как и что с ним делать. Видел в...

Вопросы - C++
Ребята, никто не писал никогда код на С++, связанный с имитационным моделированием? Просто, дали, там набор математич. формул и теория, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.