Я использую пример кода 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’
Ошибка делает, вероятно, говорит мне, что я должен также сделать мой государственный объект сериализуемый (не уверен в этом). Кроме того, я запутался, потому что хранение указателей (адресов в памяти) не хранит фактические данные, которые будут освобождены после завершения программы. Есть ли обходной путь для вышеуказанной ситуации? Даже без повышения.
Тебе нужно serialize
метод для вашего State
учебный класс.
http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html
Каждый член массива остановок будет сериализован. Но помните, что каждый член является указателем — так что это может означать? Вся цель этой сериализации состоит в том, чтобы разрешить реконструкцию исходных структур данных в другом месте и времени. Чтобы сделать это с помощью указателя, недостаточно сохранить значение указателя, скорее, объект, на который он указывает, должен быть сохранен. Когда член позже загружается, новый объект должен быть создан, и новый указатель должен быть загружен в член класса.
Также я думаю, что вы должны прочитать о сериализация указателей
Других решений пока нет …