[C++-sig] Re: Pickling object from nested class

Nikolay Mladenov nickm at sitius.com
Wed Oct 22 15:28:22 CEST 2003


Here it is:

cpp:

struct OBJ{
public :
    struct PROP{
        PROP(int i=0):p(i){}
        int p;
        operator int ()const{return p;}
    };
    OBJ(int p=0):prop(p){}
    PROP prop;
    operator int ()const{return prop.p;}
};

#include <boost/python.hpp>

using namespace boost::python;

template <class T>
struct pickle_suite_: pickle_suite
{
    static tuple getinitargs(const T &t){
        return make_tuple((int)t);
    }
};

BOOST_PYTHON_MODULE(inner)
{
    scope s(
        class_<OBJ>("OBJ", init<optional<int> >())
            .def_pickle(pickle_suite_<OBJ>())
        );
    class_<OBJ::PROP> ("PROP", init<optional<int> >())
        .def_pickle(pickle_suite_<OBJ::PROP>());
    
}
//////////////////////////////////////




py:

import inner
from sys import stdout as out
from pickle import dump
dump(inner.OBJ.PROP(),out)
#   ----------
#   stacktrace
#   ----------
#dump(inner.OBJ(), out) works fine





More information about the Cplusplus-sig mailing list