Подтвердить что ты не робот

Boost:: python: компиляция завершается с ошибкой, поскольку конструктор копирования является закрытым

Я использую boost:: python для оболочки класса С++. Этот класс не позволяет создавать конструкторы копирования, но модуль python всегда хочет его создать.

Класс С++ выглядит так (упрощенный)

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

4b9b3361

Ответ 1

Я нашел его. я должен указать boost:: noncopyable:

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