2017-05-31 50 views
-2

我有一個BOOST_PYTHON_MODULE,其中我有一個函數,我想返回一個我已經暴露的對象列表。使用boost :: python返回一個暴露的類對象的列表,這是不可複製的

namespace bp = boost::python; 

class MyClass { 
public: 
    int foo() {return 42;} 
}; 

bp::list my_fun() { 
    bp::list l; 
    l.append(MyClass()); 
    l.append(MyClass()); 
    return l; 
} 


BOOST_PYTHON_MODULE(my_module) { 
    bp::class_<MyClass,boost::noncopyable>("MyClass") 
    .def("foo",&MyClass::foo); 

    bp::def("my_fun",my_fun); 
} 

我得到厚望 「沒有to_python(按值)發現C++的類型轉換器」,

+0

由於MyClass :: foo()是私有的,所以不會編譯。除此之外,它的工作原理 - 調用'my_fun()[0] .foo()'返回42. –

+0

@DanMasek是的你說得對,謝謝你花時間。該錯誤是不可複製的關鍵字,我不認爲這個簡化的例子。 – user1443778

+0

您需要添加一個引用包裝或指向您的列表的指針。 –

回答

0

通過

的boost ::不可複製

關鍵字引起的。

相關問題