2009-05-27 98 views
0

我正在嘗試爲C++類的集合構建一組Lua綁定,但一直在玩弄Python以查看是否會獲得更好的結果。在任何一種語言中,綁定似乎都可以工作,但是,當我初始化一個包含其他類成員的類的實例時,這些數據成員似乎不能保證被初始化。用於python/lua的Swig綁定不會正確初始化成員數據

例如,走班:

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) 

我得到預期的垃圾值打印到屏幕上。但是,如果我嘗試打印任何有關OtherClass的實例,就會明顯地發現它是「stubbed out」 - 在Lua中它根本就沒有metatable,而在Python中,dir(var.oc)只給出默認的函數。但是,如果我再做:

var.oc = module_name.OtherClass() 

超頻元表/目錄(OC)調用是什麼,我會希望和預期是可以治療的。

任何人都可以提供任何洞察爲什麼只有一些成員數據初始化?

謝謝!

回答

0

原來這個問題與我遇到的另一個問題有關。有關分辨率,請參見this thread