Swig对python/lua的绑定不能正确地初始化成员数据。

我试图为一组C++类构建Lua绑定,但一直在尝试Python以查看是否获得更好的结果。无论使用哪种语言,绑定似乎都有效,但是,当我初始化包含其他类成员的类实例时,这些数据成员似乎不能保证被初始化。

例如,考虑以下类:

class MyClass : public ParentClass //(显然)不是真正的类
{
    public:
        SomeClass sc;
        OtherClass oc;
};//请注意,我的所有类都没有构造函数或析构函数;这是按设计进行的。

当我为这样的类生成绑定时,我能够执行如下语句:

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

我会得到预期的垃圾值打印在屏幕上。但是,如果我试图打印与OtherClass实例有关的任何内容,那么很明显它被“存根化”了--在Lua中它根本没有元表,在Python中执行dir(var.oc)只提供默认函数。然而,如果我这样做:

var.oc = module_name.OtherClass()

oc元表/dir(oc)调用是我所希望的,并且它可以像预期的那样对待。

有人可以解释为什么只有一些成员数据被初始化吗?

谢谢!

原文链接 https://stackoverflow.com/questions/916555

点赞
stackoverflow用户109549
stackoverflow用户109549

原来这个问题与我遇到的另一个问题有关。请查看这个帖子以了解解决方案。

2009-06-18 17:46:04