c++ - boost::python: 编译失败,因为复制构造函数是私有(private)的

标签 c++ python

我使用 boost::python 来包装一个 C++ 类。此类不允许复制构造函数,但 python 模块总是想创建一个。

C++ 类看起来像这样(简化)

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

  private:
    ByteArray m_bytearray;
};

ByteArray 类继承自 boost::noncopyable,因此 Foo 没有复制构造函数。

这是 Python 模块 stub :

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

在编译 boost::python 模块时,我收到错误,因为 ByteArray 继承自 boost::noncopyable,所以无法创建 Foo 的复制构造函数。

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

谢谢 克里斯托夫

最佳答案

我找到了。我必须指定 boost::noncopyable:

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

关于c++ - boost::python: 编译失败,因为复制构造函数是私有(private)的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142417/

相关文章:

python - Python3 电子邮件模块中的解码不正确

c++ - [C++11 : 12. 8/7] 有意义吗?

c++ - 如何用 C++ 编写现代 Windows 软件?

python - 使用 PyQgis 选择和缩放图层的特征

python - 如何告诉程序每天在准确的时间做某事?

python - Tensorflow 卷积层中的 FLOP

c++ - std::ofstream - 没有超过 1023 的缓冲字符串(即时刷新)

c++ - 链表 : Can't access last node, 获取 R6010 (C++, VS2010)

C++ Visual Studio 2012 -> 2010

Python从pandas数据框中删除自定义停用词