2012-04-13 2 views
12

저는 boost :: python을 사용하여 C++ 클래스를 래핑합니다. 이 클래스는 복사 생성자를 허용하지 않지만 파이썬 모듈은 항상 생성자를 만들고 싶어합니다.boost :: python : 복사 생성자가 private이기 때문에 컴파일이 실패합니다.

는 C++ 클래스 그러므로 푸 복사 생성자가없는,

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

    private: 
    ByteArray m_bytearray; 
}; 

ByteArray 클래스는 부스트 :: noncopyable에서 상속이 (간체)처럼 보인다.

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

부스트 :: 파이썬 모듈을 컴파일, 내가이 ByteArray 부스트 :: noncopyable에서 상속 때문에 푸에 대한 복사 생성자를 생성 할 수없는 오류를 얻을 :

다음은 파이썬 모듈 스텁입니다.

어떻게 파이썬 모듈에서 복사 생성자를 비활성화 할 수 있습니까?

감사 크리스토프

답변

36

나는 그것을 발견했다. boost :: noncopyable을 지정해야합니다.

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