Python/LUA에 대한 SWIG 바인딩은 멤버 데이터를 제대로 초기화하지 않습니다 [폐쇄

StackOverflow https://stackoverflow.com/questions/916555

문제

나는 C ++ 클래스 모음을위한 일련의 LUA 바인딩을 구축하려고 노력하고 있지만, 더 나은 결과를 얻는 지 확인하기 위해 Python과 함께 놀았습니다. 그러나 어느 언어에서든 바인딩은 작동하는 것처럼 보이지만 다른 클래스의 구성원이 포함 된 클래스의 인스턴스를 초기화하면 해당 데이터 구성원이 초기화되지 않은 것 같습니다.

예를 들어, 수업을 듣습니다.

class MyClass : public ParentClass // (Obviously) not a real class
{
    public:
        SomeClass sc;
        OtherClass oc;
};//Note that none of my classes have a constructor or destructor; this is by design.

이와 같은 클래스에 대한 바인딩을 생성 할 때 다음과 같은 문장을 실행할 수 있습니다.

var = module_name.MyClass()
print(var.sc.x, var.sc.y)

그리고 예상 정크 값을 화면에 인쇄합니다. 그러나 다른 클래스의 인스턴스에 대해 아무것도 인쇄하려고하면 그것이 "스터브 아웃"이라는 것이 분명해집니다. Lua에는 전혀 신중한 것이 없으며 Dir (var.oc)을 수행하는 Python에서는 기본 함수 만 제공합니다. 그러나 내가 그렇게한다면 :

var.oc = module_name.OtherClass()

OC Metatable / DIR (OC) 호출은 내가 기대했던 것이며 예상대로 취급 될 수 있습니다.

누구든지 회원 데이터의 일부만 초기화 된 이유에 대한 통찰력을 제공 할 수 있습니까?

감사!

도움이 되었습니까?

해결책

이 문제는 내가 가진 또 다른 문제와 관련이 있다는 것이 밝혀졌습니다. 보다 이 스레드 결의를 위해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top