我正在尝试为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)
我将预期的垃圾值打印到屏幕上。但是,如果我尝试打印关于OtherClass实例的任何内容,很明显它是“存根” - 在Lua中它根本没有元数据,而在Python中,dir(var.oc)只提供默认函数。但是,如果我这样做:
var.oc = module_name.OtherClass()
oc metatable / dir(oc)调用是我所希望的,它可以按预期处理。
任何人都可以提供任何有关为什么只有一些成员数据被初始化的见解吗?
谢谢!