У меня следующая проблема ..
У меня есть файл с именем A.h и файл B.h. каждый содержит некоторую структуру, подобную этой: (структуры внутри двух классов различны)
struct Base
{
friend class access;
template <typename Archive>
void serialize(Archive& ar,const unsigned int version)
{
ar & fieldLength;
ar & fieldMD;
ar & fieldTime_Stamp;
}
public:
unsigned int fieldLength;
unsigned int fieldMD;
unsigned int fieldTime_Stamp;
virtual void f(){} //to be polymorphic the struct
};
struct Derived:public Base
{
...
}
Так что я сериализирую структуру классическим способом:
....
std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream);
archive.register_type(static_cast<Derived*>(NULL))
archive <<p; // where p is a pointer to Base
СЕЙЧАС ПРОБЛЕМА ...
на стороне десериализации я следую той же (обратной) процедуре ... если я десериализовываю сингулярно структуры в Ah (без включения в проект Bh) и структуры в Bh (без включения в проект Ah), все работы ... .but, если я включаю в проект оба класса, десериализация работает для одного класса, но выдает «исключение ошибки потока» в инструкции «архив >> m;» для других ... кажется конфликт в классе регистрации или что-то вроде этого ...
Есть идеи? Спасибо ...