Как осуществить хранение информации об объектах (С++)?
Добавлено: 25 ноя 2010, 16:19
Задача следующая. Есть некий класс со следующими полями:
string name
string type
int num
У этого класса есть наследник, получающий 2 опциональных поля:
string optional_name
int optional_num
Эти объекты группируются по категориям (Категория 1, Категория 2 и т.д.). В каждой категории может быть неограниченное кол-во объектов обоих типов. Всего пока насчитывается порядка 200-300 объектов, будет ли увеличение неизвестно.
Суть программы - просмотр содержимого объектов (одного объекта, принадлежащих определенной категории, всех объектов). Возможность добавлять новые объекты в разные категории. Удалять существующие.
Вопрос же в следующем: как хранить уже существующую информацию?
Думал в базе данных, но объектов не так уж и много. Есть вариант хранения в файле, правда не понятно как их оттуда вытаскивать в соответствии с задачами (как вариант 1 объект - 1 строка, и вытаскивать распарсивая строки).
Вобщем, обмозговывая данную ситуацию пришел к следующему - к (де)сериализации. Но, насколько мне известно, в С++ этого нету. Есть вроде бы в библиотеку boost, но я с бустом не работал, да и пишут в интернетах, что не очень эффективно по скорости (скорость немного важна). Нашел еще решение, предложенное гугглом - google protobuf, но он мне не понравился следующими вещами:
- нету поддержки наследования
- нужно предварительно формировать .proto файл, потом его компилить и на его основе создастя необходимый мне класс
Есть ли какие-нибудь оптимальные методы (де)сериализации или хранения информации об объектах между работой программы, где по их реализацию почитать можно (может кто-то поделиться своей или общепризнанной)?
Заранее большое спасибо за помощь.
string name
string type
int num
У этого класса есть наследник, получающий 2 опциональных поля:
string optional_name
int optional_num
Эти объекты группируются по категориям (Категория 1, Категория 2 и т.д.). В каждой категории может быть неограниченное кол-во объектов обоих типов. Всего пока насчитывается порядка 200-300 объектов, будет ли увеличение неизвестно.
Суть программы - просмотр содержимого объектов (одного объекта, принадлежащих определенной категории, всех объектов). Возможность добавлять новые объекты в разные категории. Удалять существующие.
Вопрос же в следующем: как хранить уже существующую информацию?
Думал в базе данных, но объектов не так уж и много. Есть вариант хранения в файле, правда не понятно как их оттуда вытаскивать в соответствии с задачами (как вариант 1 объект - 1 строка, и вытаскивать распарсивая строки).
Вобщем, обмозговывая данную ситуацию пришел к следующему - к (де)сериализации. Но, насколько мне известно, в С++ этого нету. Есть вроде бы в библиотеку boost, но я с бустом не работал, да и пишут в интернетах, что не очень эффективно по скорости (скорость немного важна). Нашел еще решение, предложенное гугглом - google protobuf, но он мне не понравился следующими вещами:
- нету поддержки наследования
- нужно предварительно формировать .proto файл, потом его компилить и на его основе создастя необходимый мне класс
Есть ли какие-нибудь оптимальные методы (де)сериализации или хранения информации об объектах между работой программы, где по их реализацию почитать можно (может кто-то поделиться своей или общепризнанной)?
Заранее большое спасибо за помощь.