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