1

私はこのような状況を持っています:

class IData 
{
  virtual void get() = 0;
  virtual void set() = 0;
}
BOOST_ASSUME_IS_ABSTRACT(IData)
BOOST_EXPORT_CLASS(IData)

template<typename T>
class ConcreteData : public IData
{
public:

protected:
 template<typename Archive>
 void serialize(Archive& ar, const unsigned version)
 {
   ar & data;
 }
private:
 std::vector<T> mData;
}
BOOST_EXPORT_CLASS(ConcreteData<float>)
BOOST_EXPORT_CLASS(ConcreteData<int>)
BOOST_EXPORT_CLASS(ConcreteData<double>)

ブースト シリアライゼーションを介して "IData" インスタンスをシリアライズおよびデシリアライズしたいのですが、うまくいかないようです。誰かが以前にこれをやったことがありますか、または何か提案はありますか.ちなみに私はVS 2005を使用しています.

4

2 に答える 2

3

BOOST_CLASS_EXPORT_GUID代わりに使用してみてください:

BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
于 2009-06-26T20:55:13.163 に答える
1

クラスが名前空間に存在する場合は、名前空間を追加することを忘れないでください。

BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")
于 2012-03-29T08:09:19.013 に答える