私のアプリケーションには、シリアル化できるようにしたい多くのクラスがあります。したがって、インスタンスをシリアライズ可能にする必要がある各クラスには、次のものがあります。
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
// ar & (all data members)
}
オブジェクトをシリアル化するには、クラスの外部から次のコードを使用する必要があります。
ObjectToSerialize obj;
stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << obj;
この 2 番目のコード ブロックは、オブジェクトをシリアル化するたびに使用する必要があるため、私を悩ませています。このコードを 1 つの場所に移動して、オブジェクトをシリアル化する必要があるときに呼び出す方法はありますか?
このメソッドを使用してオブジェクトを作成できます。
string serializeObject(Serializable obj)
しかし、これの問題は、ブースト シリアライゼーション機能を追加するときにクラスが実装する必要があるスーパータイプがないため、どのオブジェクトが「シリアライズ可能」であるかを判断する方法がないことです。
では、このコードを 1 か所にまとめて、シリアライズ可能なオブジェクトのみをメソッドに渡すにはどうすればよいでしょうか?