2009-06-16 4 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

답변

3

대신 BOOST_CLASS_EXPORT_GUID를 사용해보십시오 :

경우
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>")