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

我想序列化和反序列化通過升壓系列化「IData的」實例,但它似乎不工作。有沒有人這樣做過,或者你有任何suggestions.by我正在全光照VS 2005的方式

+0

我們能否看到更多的代碼? get()/ set()如何在具體中實現,數據存儲在哪裏? – Pieter 2009-06-17 10:49:33

回答

3

嘗試使用BOOST_CLASS_EXPORT_GUID代替:

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

謝謝你的工作。 – Qubeuc 2009-06-27 19:21:02

1

如果你的類生活在一個命名空間中,不要忘了添加命名空間:

BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>") 
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")