Boost logo

Boost Users :

From: Graham Reitz (graham.cpp_at_[hidden])
Date: 2007-10-07 20:30:17


I am having trouble wrapping my head around object tracking for serialization.

I see how to change the default behavior:
BOOST_CLASS_TRACKING(my_class, boost::serialization::track_never)

...but based on the error below how do I determine what kind of object
tracking is needed?

oserializer.hpp:566: error: invalid application of 'sizeof' to
incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'

inline void save(Archive & ar, T &t){
    // if your program traps here, it indicates taht your doing one of
the following:
    // a) serializing an object of a type marked "track_never" through
a pointer.
    // b) saving an non-const object of a type not markd "track_never)
    // Either of these conditions may be an indicator of an error usage of the
    // serialization library and should be double checked. See documentation on
    // object tracking.
    BOOST_STATIC_ASSERT(check_tracking<T>::value);

The following is the class to be serialized:

class client_i
{
private:
    friend class boost::serialization::access;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    { ar & m_client; }

    clients m_client;
public:

    client_i() {};
    client_i(clients c) : m_client(c) {};
    ~client_i() {};
};

clients is a mysql++ specialized sql structure that is created via one
of the mysql++ macros, i.e. sql_create_N().

Any help understanding this would be greatly appreciated.

Thanks,
Graham


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