2009-06-16 9 views
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>) 

iは、ブーストのシリアル化を経由して「IDATA」のインスタンスをシリアライズとデシリアライズしたいが、それは動作していないようです。誰もが前にこれを行っているか、どのsuggestions.by私はVS 2005

+0

もう少しコードを見ることができますか?どのようにget()/ set()がコンクリートに実装されていますか?データはどこに格納されていますか? – Pieter

答えて

3

ではなくBOOST_CLASS_EXPORT_GUIDを使用してみてくださいusinい方法ありますか:

BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>") 
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
+0

ありがとうございました。 – Qubeuc

1

あなたのクラスは、名前空間に住んでいる場合は、忘れないように名前空間を追加する:

BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>") 
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>") 
関連する問題