|
Boost Users : |
From: Dieter Buys (dieter.buys_at_[hidden])
Date: 2006-07-14 18:58:22
Hi,
I am experiencing difficulties in getting the Boost serialization
library to work. There seems to be an error related to object tracking,
as I am getting BOOST_STATIC_ASSERTION_FAILURE<x>. I am trying to figure
it out using the attached test code. The documentation claims I should
be putting a BOOST_SERIALIZATION_TRACKING() macro in my file (presumably
directly after my class definition). I did a full text search over the
entire source of the library and nowhere did this preprocessor macro
exist. There is a BOOST_CLASS_TRACKING() macro, which I tried putting in
my source with tracking_never. That seems to have made no appreciable
difference.
I have absolutely no idea what I am supposed to do. :(
Any help would be appreciated.
Thanks,
~ Dieter Buys
#include <fstream>
#include <boost/shared_ptr.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/tracking.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class gps_position
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & degrees;
ar & minutes;
ar & seconds;
}
int degrees;
int minutes;
float seconds;
public:
gps_position() {};
gps_position(int d, int m, float s) : degrees(d), minutes(m), seconds(s) {}
};
// BOOST_CLASS_TRACKING(gps_position, track_never)
int main(void)
{
std::ofstream ofs("serial.txt");
gps_position *g = new gps_position(35, 59, 24.567f);
// const gps_position g(35, 59, 24.567f);
{
boost::archive::text_oarchive oa(ofs);
oa << g;
}
delete g;
gps_position *newg;
// gps_position newg;
{
std::ifstream ifs("serial.txt", std::ios::binary);
boost::archive::text_iarchive ia(ifs);
ia >> newg;
}
delete newg;
return 0;
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net