|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
boost::serialization21.07.2011, 15:41. Показов 8888. Ответов 10
Метки нет (Все метки)
Нечто вроде ДБ написано с использованием boost::any (любой конечный элемент ДБ, то есть содержимое любой ячейки - объект Holder в котором используется boost::any). Захотелось мне это дело сериализовать, а то как-то не коммильфо.
База довольно простая и ограничения на ней - используется только два типа. Числа (int) или строки (string). Как бы поаккуратнее сериализовать объект boost::any (save/load)?
0
|
|
| 21.07.2011, 15:41 | |
|
Ответы с готовыми решениями:
10
boost::serialization serialized via boost::serialization |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.07.2011, 19:08 [ТС] | |
|
niXman, Я имею ввиду адекватно, чтобы работало. Пробовал через исключения - то есть пробуем преобразовать в int -> не вышло значит пробуем в string и сереализуем, вышло -> сериализуем int.
При загрузке это было намного проблемнее -> грузим в int -> не вышло -> грузим в string, вышло -> грузим в int и устанавливаем значение внутреннего any потом понял что подход в корне не верен, ибо получал ошибку архива, что и понятно. Пробовал загружать все в строку, затем переводить в int lexical_cast-ом -> тоже потерпел неудачу, в строку грузится все что есть в строке файла (?), итого при попытке сериализовать три числа 5, 25, 15 и загрузки их в строку получил строку 5, 25, 15 и в дальнейшем вылет программы с ошибкой архива, ибо читаю/пишу я вектор таких Holder-ов. Идей как-то практически нет как успешно это сделать.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 22.07.2011, 07:22 | |
|
Вот сам себе головняк создал. У тебя же всего два известных типа, зачем boost::any, почему не boost::variant?
В принципе, ты же сам пишешь не интрузивную сериализацию. Что тебе мешает сперва сохранить информацию о действительном типе? Тогда при загрузке обойдёшься простым свитчем.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 22.07.2011, 10:13 [ТС] | ||||||
|
niXman, Возможно логичнее да. Возможно так и поступлю.
Deviaphan, Ну пока два... А потом может расширить захочу... Ну да. Тоже вариант Добавлено через 1 час 37 минут Вообщем разрешил с сериализацией примерно так.
0
|
||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 22.07.2011, 10:43 | |
|
Т.е. в пределах столбца типы одинаковые? Тогда не мути! Сохраняй кортежами, построчно.
Тогда тебе будет нужно один раз распарсить типы данных для каждого столбца, и потом уже по порядку известные типы сериализовывать. Нынешний вариант никуда не годен, просто представь, какая лапша и рай-кэтчей у тебя получится при добавлении новых типов. Самое объектно-ориентированное решение - не хранить данные непосредственно, а использовать сериализуемую обёртку, вместо boost::any. Полиморфные классы без проблем сериализуются. Чуть больше писанины, зато от переключения типов избавишься. 21 век, всё таки, уже.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 22.07.2011, 14:28 [ТС] | |
|
Deviaphan, Вариант. Буду пробовать.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 06.09.2011, 13:47 [ТС] | ||||||
|
Вернулся к этому. Видимо буду делать как-то так.
1
|
||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||
| 06.09.2011, 14:01 | ||
|
Добавлено через 55 секунд А другой вариант, это вручную назначать каждому типу свой идентификатор и поприветствовать переключение типов.)
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 06.09.2011, 15:49 [ТС] | |||||||||||
Сообщение было отмечено ForEveR как решение
Решение
В итоге:
В сериализации Template забыл добавить сериализацию объекта базового класса.
0
|
|||||||||||
| 06.09.2011, 15:49 | |
|
Помогаю со студенческими работами здесь
11
Boost::serialization, как сериализовать std::tuple? Как подключить Boost::serialization в CMakeLists.txt? boost serialization. загрузка данных из архива в std::list boost::serialization. Как сериальзовывать собственные типы данных? boost serialization. Перегрузка save_construct_data и load_constract_data для шаблонных классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|