【发布时间】:2016-01-19 10:21:00
【问题描述】:
我有给定的代码,
在 A.hpp 中
typedef boost::shared_ptr<A> APtr;
和
在 B.hpp 中
typedef std::vector<APtr> APtrCollection;
typedef boost::shared_ptr<APtrCollection> APtrCollectionPtr;
APtrCollectionPtr a_ptr;
APtrCollectionPtr B::get_items() {
return a_ptr;
}
在 boost.python 接口文件中
class_<B>("St")
.def("get", get_st)
.def("set", set_st)
.add_property("items", &B::get_items)
;
代码编译没有错误,但是当我运行时,我得到了错误
TypeError: 'No to_python (by-value) converter found for C++ type: boost::shared_ptr<std::vector<boost::shared_ptr<A>, std::allocator<boost::shared_ptr<A> > > >'
如何解决这个问题?
我的增强版本是:1.57, 蟒蛇:Python 2.7.11 |Anaconda 2.4.1(64 位), gcc:gcc 版本 4.8.3 (GCC)
【问题讨论】:
标签: python c++ boost shared-ptr boost-python