boost::archive::binary_oarchive ar(fout);
ar.register_type<MsgBoxOperation>();
Сериализация с помощью boost
У меня возникла проблема с сериализацией даных boost-ом.
Ситуация такая: есть набор класов, которые наследуются от абстрактного базового класа IOperation. Обьекты содержатся в памяти через указатели на базовый клас.
Для правильной сериализации необходимо зарегистрировать производные типы, чтобы boost знал идентификаторы и мог использовать RTTI в процессе сериализации.
Вот пример из мого кода (fout - std :: ofstream):
Код:
Проблема в том, что при попытке регистрации любого типа, который наследует IOperation, я получаю ошибку (пользуюсь MS Visual Studio 2005):
error C2248: 'boost::scoped_ptr<T>::scoped_ptr' : cannot access private member declared in class 'boost::scoped_ptr<T>' e:\libraries\boost\1_43\include\boost\archive\basic_binary_oprimitive.hpp 141
Я в коде использую только boost::shared_ptr.
Может кто подскажет в чем проблема (ошыбка возникает независимо от содержымого производного класа).