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

18
我使用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 模块时,我遇到了一个错误,说无法创建 Foo 的拷贝构造函数,因为 ByteArray 继承自 boost::noncopyable。

如何在我的 Python 模块中禁用拷贝构造函数?

谢谢 Christoph

1个回答

51

我找到了解决方案。我需要指定boost::noncopyable:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接