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 путь я USIN 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>")