![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| georain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Есть набор классов, их надо сериализовать для записи на диск, а также сериализовать для отправки по сети, причём используются разные поля.
Хотелось бы использовать boost::serialization, но я что-то не соображу как там это можно сделать. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Боюсь, что никак. Сериализация(как технология) подразумевает единое представление одного и того же объекта.
Можно воспользоваться proxy-классом, чтобы организовать выбор метода сериализации, но это решение не универсально... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Какая-то всё-таки странная ситуация... Если ты можешь сериализовать поля a, b или c, d => они взаимозаменяемы... Можешь конкретно показать класс (декларейшн) и объяснить, что ты хочешь получить при сериализации?
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
кидать по сети нужно далеко не то, что сохранять на диск
к примеру Это сообщение отредактировал(а) Alek86 - 3.1.2008, 19:22 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Всмысле? Почему? Не ту информацию или не в том виде? За последнее - согласен, а вот первое спорно... Если это не "односторонняя сериализация" (просто импорт). |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Значит паттерн "сериализация" здесь не подходит и не нужно изобретать себе сложности. Если мне нужно сохранить на диск два числа, а по сети послать их сумму, то я так и сделаю -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
ну к примеру, если это обычный сервер с защитой, то некоторые данные (как пароль) просто недопустимо по сети высылать. думаю, "в жизни" подо
бные случаи могут быть кстати, это уж особо к теме и не относится ) |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Пароли нигде не хранят вообще-то, но, даже если допустить реалистичность ситуации, то замечание о неприменимости сабжевого паттерна остаётся в силе ;). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| georain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Есть клиент-серверное приложение, и там и там есть одинаковое дерево классов, но у серверных классов есть дополнительные поля, которые клиенту отправлять не нужно, необходимые для внутренней работы сервера. При выключении сервера все объекты классов записываются на диск полностью, а при работе с клиентом синхронизуется только часть полей.
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
а вот так не вариант сделать?
можно например сериализовать в xml, а его уже слать по сети или сохранять |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
И всё-таки - можно один конкретный пример? И такой вопрос - при работе с клиентом ты только отправляешь данные? Не получашешь, что ли те же объекты (тех же классов)? И, если получаешь - откуда у тебя берутся "дополнительные" поля?
Решения возможны различные - желательно всё же описать ситуацию подробней |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |