18

i use boost::python to wrap a C++ class. This class does not allow copy constructors, but the python module always wants to create one.

The C++ class looks like this (simplified)

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

  private:
    ByteArray m_bytearray;
};

The ByteArray class is inherited from boost::noncopyable, therefore Foo does not have copy constructors.

Here's the Python module stub:

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

When compiling the boost::python module, i get errors that a copy constructor for Foo cannot be created because ByteArray inherits from boost::noncopyable.

How can i disable copy constructors in my python module?

Thanks Christoph

cruppstahl
  • 2,447
  • 1
  • 19
  • 25

1 Answers1

51

I found it. i have to specify boost::noncopyable:

BOOST_PYTHON_MODULE(Foo)
{   
  class_<Foo, boost::noncopyable>("Foo", init<const char *>())
  ;
}
cruppstahl
  • 2,447
  • 1
  • 19
  • 25