Python/LUA에 대한 SWIG 바인딩은 멤버 데이터를 제대로 초기화하지 않습니다 [폐쇄
-
06-09-2019 - |
문제
나는 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) 호출은 내가 기대했던 것이며 예상대로 취급 될 수 있습니다.
누구든지 회원 데이터의 일부만 초기화 된 이유에 대한 통찰력을 제공 할 수 있습니까?
감사!
해결책
이 문제는 내가 가진 또 다른 문제와 관련이 있다는 것이 밝혀졌습니다. 보다 이 스레드 결의를 위해.
제휴하지 않습니다 StackOverflow