2009年2月5日 星期四

boost serialization的多型指標問題serialize問題

如果你有D class繼承B class,當你在多型指標的serialization的時候,要記得在D class的serialization加入

ar & boost::serialization::base_object(*this);

要不然,boost的serialization會丟出unregistered_cast的exception。
(即使B class根本沒有任何資料要serialize)

底下是簡單的範例

#include <boost/serialization/access.hpp>

class B
{
friend class boost::serialization::access;

template<class Archive> void serialize(Archive& ar, const unsigned int file_version)
{
}
};

class D : public B
{
friend class boost::serialization::access;

template<class Archive> void serialize(Archive& ar, const unsigned int file_version)
{
ar & boost::serialization::base_object(*this);
ar & value_;
}

private:
int value_;
};

沒有留言:

LinkWithin

Related Posts with Thumbnails