2012-04-13 20 views
12

我使用boost :: python來包裝一個C++類。這個類不允許複製構造函數,但是python模塊總是想創建一個。boost :: python:編譯失敗,因爲拷貝構造函數是私有的

的C++類看起來像這樣(簡化的)

class Foo { 
    public: 
    Foo(const char *name); // constructor 

    private: 
    ByteArray m_bytearray; 
}; 

ByteArray類是從升壓::不可複製遺傳,因此富不具有複製構造。

這裏的Python模塊存根:

BOOST_PYTHON_MODULE(Foo) 
{ 
    class_<Foo>("Foo", init<const char *>()) 
    ; 
} 

當編譯的boost :: Python模塊,我得到的錯誤,Foo的拷貝構造函數不能創建,因爲從ByteArray中的boost ::不可複製繼承。

如何禁用我的python模塊中的複製構造函數?

感謝 克里斯托夫

回答

36

我發現了它。我必須指定boost :: noncopyable:

BOOST_PYTHON_MODULE(Foo) 
{ 
    class_<Foo, boost::noncopyable>("Foo", init<const char *>()) 
    ; 
} 
相關問題