boost::p ython:编译失败,因为复制构造函数是私有的

boost::python: compilation fails because copy constructor is private

本文关键字:构造函数 复制 ython 编译 失败 boost 因为      更新时间:2023-10-16

我使用 boost::p ython 来包装一个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::p ython 模块时,我收到错误,指出无法创建 Foo 的复制构造函数,因为 ByteArray 继承自 boost::noncopyable。

如何在 python 模块中禁用复制构造函数?

谢谢克里斯托夫

我找到了。 我必须指定提升::不可复制:

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