1
什么是SWIG等同于存储一个任意python对象的副本?SWIG相当于存储一个boost :: python :: object
我很确定我在问什么是可能的,因为它可以与boost :: python一起工作(见下文),但是我看不到使用SWIG来做到这一点的方法。
#include <boost/python.hpp>
using namespace boost::python;
class MyClass
{
public:
// other operations
object get_info() { return info_; }
void set_info(object info) { info_ = info; }
private:
object info_;
};
BOOST_PYTHON_MODULE(mymodule)
{
class_<MyClass>("MyClass")
.def("get_info", &MyClass::get_info)
.def("set_info", &MyClass::set_info)
;
}
因此,如果这个类是不可复制的,那么一个简单的INCREF/DEFREF就足够了?我不必担心任何其他特殊情况? – 2012-04-02 00:06:28
@AndrewWalker - 取决于你在想什么天真。如果你已经设置了一个集合,你需要DECREF。当你摧毁时你也需要DECREF。我真的建议去RAII的方法 - 很难让它错误。 – Flexo 2012-04-02 00:20:38