2012-04-13 17 views
12

uso boost :: python per eseguire il wrapping di una classe C++. Questa classe non consente i costruttori di copie, ma il modulo python ne vuole sempre creare uno.boost :: python: la compilazione fallisce perché il costruttore della copia è privato

La classe C++ si presenta così (semplificato) classe

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

    private: 
    ByteArray m_bytearray; 
}; 

Il ByteArray viene ereditato da boost :: noncopyable, quindi Foo non ha costruttori di copia.

Ecco lo stub modulo Python:

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

Quando si compila il boost :: modulo Python, ottengo errori che un costruttore di copia per Foo non può essere creato perché ByteArray eredita da boost :: noncopyable.

Come posso disabilitare i costruttori di copie nel mio modulo Python?

Grazie Christoph

risposta

36

ho trovato. Devo specificare boost :: noncopyable:

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