Сохранение вектора указателей на пользовательские объекты в файл

Я использую пример кода Boost для хранения вектора указателей объектов в файле.
Мой вектор:

class VOMC{
public:
vector<State*> vomc;
...
...
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & vomc;
}
}

Это дает мне следующую ошибку (среди немногих больше):

/usr/local/include/boost/serialization/access.hpp:118:9: error: ‘class State’ has no member named ‘serialize’

Ошибка делает, вероятно, говорит мне, что я должен также сделать мой государственный объект сериализуемый (не уверен в этом). Кроме того, я запутался, потому что хранение указателей (адресов в памяти) не хранит фактические данные, которые будут освобождены после завершения программы. Есть ли обходной путь для вышеуказанной ситуации? Даже без повышения.

1

Решение

Тебе нужно serialize метод для вашего State учебный класс.

http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html


Каждый член массива остановок будет сериализован. Но помните, что каждый член является указателем — так что это может означать? Вся цель этой сериализации состоит в том, чтобы разрешить реконструкцию исходных структур данных в другом месте и времени. Чтобы сделать это с помощью указателя, недостаточно сохранить значение указателя, скорее, объект, на который он указывает, должен быть сохранен. Когда член позже загружается, новый объект должен быть создан, и новый указатель должен быть загружен в член класса.

Также я думаю, что вы должны прочитать о сериализация указателей

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]