
Is there a way to serialize an unknown number of items and then read them back? In essence, I'd like to do this: Ignore the variables being serialized, these are pointers to base classes, they go in and out just fine. try { ofstream ofs(fileName.c_str(),ios::binary); portable_binary_oarchive oa(ofs); //boost::archive::text_oarchive oa(ofs); oa<<qdc <<qdf <<qdenv <<qdmsg <<qsd <<qdfc <<qdce; } catch(boost::archive::archive_exception& ae) { cout<<ae.what(); } try { ifstream ifs(fileName.c_str(),ios::binary); portable_binary_iarchive ia(ifs); //boost::archive::text_iarchive ia(ifs); while( true ) { ia>>qdc2; cout<<qdc2->GetElementDebugType()<<endl; delete qdc2; qdc2=NULL; } } catch(boost::archive::archive_exception& ae) { cout<<ae.what(); } catch( std::exception& e) { cout<<e.what(); } What happens is that an exception gets tossed with this message: 5 2 14 1 3 18 Access violation - no RTTI data! The numbers are correct, those are the elements that got serialized. I'd like to do something like: while( ia ) { Ia>>qdc2; } But there is no () operator on an portable_binary_iarchive . I tried to do the test on the input stream, but that didn't work either. I don't know how many elements there are because I'm writing them as I go, I don't want to catch that exception as the EOF marker, because it really isn't the correct exception for that. I tried walking through the serialization code to see where it actually reads a byte stream form the file... but I'm apparently not smart enough to unravel that much templated Macro awesomeness. :) Larry E. Ramey