У меня возникла проблема, когда я пытаюсь сериализовать сообщение класса шаблона. Сообщение класса шаблона имеет тип BaseClass, но я хочу, чтобы оно сериализовало производные версии класса. На данный момент это только сериализация BaseClass. Как мне зарегистрировать в boost :: serialization типы производных классов, которые я хочу сериализовать? Я пробовал несколько методов, таких как использование макроса «BOOST_CLASS_EXPORT». Также я попытался использовать этот пример:
ar.register_type(static_cast<bus_stop_corner *>(NULL));
отсюда: http://www.boost.org/doc/libs/1_36_0/libs/serialization/example/demo_gps.hpp но все равно не повезло.
template <class T>
class Frame{
...
private:
T message;
};
class BaseType{};
class SubTypeA : public BaseType{};
class SubTypeB : public BaseType{};
int main(){
std::vector< Frame<BaseType> > myFrames;
//add a bunch of Frame<SubTypeA> and Frame<SubTypeB> objects to the myFrames vector.
//serialize the vector.
return 0;
}
Этот код вообще не компилируется, но был включен, чтобы дать вам представление о структуре моей программы.