2009-09-01 3 views
0

새 클래스 인스턴스 (C++ 클래스를 상속 한 파이썬 클래스)를 C++로 전송하고 개체를 반환하지 않고 C++ 포인터로 처리해야합니까? . 예를 들어파이썬 개체가 C++에서 범위를 벗어나면 중지합니다.

:

C++

object pyInstance = GetLocalDict()["makeNewGamePlay"](); 
CGEPYGameMode* m_pGameMode = extract< CGEPYGameMode* >(pyInstance); 

pyth :

class Alpha(CGEPYGameMode): 
    def someFunct(self): 
    pass 

def makeNewGamePlay(): 
    return Alpha() 

pyInstance 파이썬 클래스 인스턴스이고 m_pGameMode가 동일한 인스턴스의 C++의 base class 포인터이다. 그러나 포인터를 저장하고 개체를 범위 밖으로 이동 시키면 파이썬 개체가 정리됩니다. 거기에 개체를 청소와 C + + 포인터를 가지고 어떤 방법이 있나요?

더 많은 정보는 : python object to native c++ pointer

답변

2

당신은 pyInstance의 reference count를 증가해야합니다. 그러면 파이썬이 그것을 삭제하지 못하게됩니다. 삭제할 준비가되면 참조 카운트를 줄이면 파이썬이이를 정리합니다.

+0

고마워요. :피 – Lodle

관련 문제