|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
[C++ BOOST] serialization
Ho un problema con un'eccezione "unregistered class":
Nel mio "main" serializzo un LLElementHandler (m_EleHandler): (registro quì le classi ma ho provato a registrarle ovunque ...) Codice:
std::ofstream ofs("archive.txt");
boost::archive::text_oarchive oa(ofs);
ar.register_type(static_cast<LLBaseEntity *>(NULL));
ar.register_type(static_cast<LLElementHandler*>(NULL));
ar.register_type(static_cast<LLBaseHandler *>(NULL));
oa << m_EleHandler;
Codice:
template<class Archive>
void serialize(Archive & ar, const unsigned int /* file_version */)
{
puts("LLElementHandler serialize");
ar & boost::serialization::base_object<LLBaseHandler>(*this);
}
dove c'è questo codice: Codice:
template<class Archive>
void serialize(Archive & ar, const unsigned int /* file_version */)
{
puts("LLBaseHandler serialize");
ar & m_OwnEntities;
}
Infatti: Codice:
template<class Archive>
void serialize(Archive & ar, const unsigned int /* file_version */)
{
puts("LLBaseEntity serialize");
ar & m_State;
}
Quote:
Questa è l'istruzione che crea problemi: ar & m_OwnEntities; ... perchè ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Ho risolto ma adesso ho un altro problema:
Ho splittato le funzioni save e load per capire cosa succede ma non capisco. In pratica mi salva tutti gli handlers ma mi carica solo il primo. Se cambio l'ordine degli handlers nella funzione "load" continua a caricarmi solo il primo. Codice:
template<class Archive>
void save(Archive & ar, const unsigned int version) const
{
puts("LLEngine serialize - save");
ar & m_EleHandler;
ar & m_DeviceHandler;
ar & m_PanelHandler;
ar & m_UnitHandler;
}
template<class Archive>
void load(Archive & ar, const unsigned int version)
{
puts("LLEngine serialize - load");
ar & m_EleHandler;
ar & m_DeviceHandler;
ar & m_PanelHandler;
ar & m_UnitHandler;
}
BOOST_SERIALIZATION_SPLIT_MEMBER()
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:23.



















