2012-04-13 26 views
12

bir ++ C++ sınıfını sarmak için boost :: python kullanıyorum. Bu sınıf, kopya oluşturuculara izin vermez, ancak python modülü her zaman bir tane oluşturmak ister.boost :: python: derleme başarısız olur çünkü kopya kurucusu özel

C++ sınıfı nedenle Foo kopya kurucular yok,

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

    private: 
    ByteArray m_bytearray; 
}; 

ByteArray sınıfı boost :: noncopyable tevarüs edilen bu (basitleştirilmiş) benziyor.

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

boost :: piton modülü derleme i ByteArray boost :: noncopyable devralır çünkü Foo bir kopya yapıcı oluşturulan edilemez hatalar alıyorum:

İşte Python modülü saplama var.

Python modülümdeki kopya yapıcıları nasıl devre dışı bırakabilirim?

Teşekkür Christoph

cevap

36

ben buldum. boost :: noncopyable değerini belirtmek zorundayım:

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