2012-04-13 14 views
12

私はboost :: pythonを使ってC++クラスをラップします。このクラスはコピーコンストラクタを許可しませんが、Pythonモジュールは常にコンストラクタを作成したいと考えています。boost :: python:コピーコンストラクタがプライベートなのでコンパイルが失敗する

C++クラスは、この(簡体字)

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

    private: 
    ByteArray m_bytearray; 
}; 

ByteArrayクラスはブーストから継承さ::コピー不可のように見え、したがって、Fooのは、コピーコンストラクタを持っていません。

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

ブースト::のpythonモジュールをコンパイル、私はByteArrayのブースト::コピー不可から継承するため、fooのコピーコンストラクタを作成できないというエラーが出:

はここでPythonモジュールのスタブです。

Pythonモジュールでコピーコンストラクタを無効にするにはどうすればよいですか?私はそれを見つけた

おかげ クリストフ

答えて

36

。私はboost :: noncopyableを指定する必要があります:

BOOST_PYTHON_MODULE(Foo) 
{ 
    class_<Foo, boost::noncopyable>("Foo", init<const char *>()) 
    ; 
} 
関連する問題