17

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

C ++クラスは次のようになります(簡略化)

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

  private:
    ByteArray m_bytearray;
};

ByteArrayクラスはboost::noncopyableから継承されるため、Fooにはコピーコンストラクターがありません。

Pythonモジュールスタブは次のとおりです。

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

boost :: pythonモジュールをコンパイルすると、ByteArrayがboost :: noncopyableから継承するため、Fooのコピーコンストラクターを作成できないというエラーが発生します。

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

ありがとうクリストフ

4

1 に答える 1

48

見つけた。boost::noncopyable: を指定する必要があります。

BOOST_PYTHON_MODULE(Foo)
{   
  class_<Foo, boost::noncopyable>("Foo", init<const char *>())
  ;
}
于 2012-04-16T09:58:26.677 に答える