> That's likely something else entirely. We'd have to see more
code.
Forget my previous post, the exception was due to mixed up ofstream and
ifstream...
Just to resume - if I have a list of pointers to the objects (all derived
from the same base class) and I'd like to serialize them through a reference, a
code like this would be needed:
// List of pointers
A a;
B b; // Derived from A
C c; // Derived from C
std::list<A*>
list;
list.push_back(&a); // Base
list.push_back(&b); //
Derived
list.push_back(&c); // Derived
...
// Save
std::ofstream
ofs("c:/test.xml");
boost::archive::xml_oarchive oa(ofs);
BOOST_FOREACH(A*
pA, list)
{
if (dynamic_cast<B*>(pA))
{
B& b = *static_cast<B*>(pA);
oa & BOOST_SERIALIZATION_NVP(b);
}
else if
(dynamic_cast<C*>(pA))
{
C& c = *pA;
BOOST_SERIALIZATION_NVP(c);
}
else
{
A& a = *pA;
BOOST_SERIALIZATION_NVP(a);
}
}
Am I right?