4
我有這個簡單的C++代碼:醃製助推器python中的矢量?
class Contained {};
class CannotPickle {
public:
CannotPickle() {};
CannotPickle(std::vector<boost::shared_ptr<Contained>> new_vector)
: my_vector(new_vector) {};
std::vector<boost::shared_ptr<Contained>> my_vector;
};
struct CannotPickle_pickle_suite : boost::python::pickle_suite
{
static
boost::python::tuple
getinitargs(CannotPickle const& c)
{
return boost::python::make_tuple(c.my_vector);
}
};
我試圖啓用CannotPickle
這樣的酸洗支持:
class_<Contained>("Contained");
class_<std::vector<boost::shared_ptr<Contained>>>("ContainedPtrList")
.def(vector_indexing_suite<std::vector<boost::shared_ptr<Contained>>, true>());
class_<CannotPickle>("CannotPickle")
.def_pickle(CannotPickle_pickle_suite());
當我嘗試實際調用pickle
上CannotPickle
我得到這個錯誤: RuntimeError:酸洗「MyModule.ContainedPtrList」實例未啓用(http://www.boost.org/libs/python/doc/v2/pickle.html)
如何啓用酸洗vector_indexing_suite
?