2010-03-17 4 views
3

같은 것을 고려 파이썬 스크립트에 전달하는 C++ 코드에서 파이썬 스크립트는 MyClass 객체를 사용하여 C++ 코드의 맨 처음에 만든 Parameter I 인스턴스를 수정합니다.패스 :: 파이썬

코드가 실행 된 후 C++에서 매개 변수 인스턴스가 변경되지 않았습니다 !!! 이것은 값 (또는 무엇인가 비슷하게 : S)에 의해 전달되었음을 의미합니다. 하지만 나는 그것이 참조로 전달 될 것이라고 생각 ...

참조로 전달하는 방법에 대한 Boost :: Python 설명서를 찾을 수 없습니다. (참조로 돌아 오는 것에 대한 충분한 문서가있는 것 같지만 ...) . 누구든지 힌트 나 포인터를 주시겠습니까?

+2

매개 변수 생성자에서 세미콜론을 추가 한 후이 테스트 코드가 제대로 작동했습니다. http://www.pastie.org/873263 –

+1

@Goose, 질문은 C++이 아니라 Python에서이 코드를 사용하는 것입니다. –

+0

@Barry mhm. 이것은 단지 빨리 작성된 예제였습니다. – Fabzter

답변

1

파이썬에는 참조가 없으므로, 파이썬 boost::python에 대한 참조를 전달하면 객체의 copy-ctor이 호출됩니다.

이 경우에는 두 가지 선택 사항이 있습니다. 포인터 (또는 스마트 포인터)로 참조 바꾸기 또는이 파이썬 자신의 '스마트 참조'객체/래퍼로 전달됩니다.

+0

내 프로젝트에서 copy-ctor의 데이터를 복사하지 않고 데이터 포인터를 공유하는 스마트 벡터를 만들어 동일한 문제를 해결합니다. – W55tKQbuRu28Q4xv

+0

감사합니다! 내가 도움이되지만, 나는 파이썬이 모든 것을 참조로 관리했다고 생각 했는가? – Fabzter

+0

내가 틀렸을 수도 있지만 참조가 아닌 C++ 포인터와 같은 파이썬 참조입니다. – W55tKQbuRu28Q4xv