我使用 swig 创建了一个包含大量包装 C++ 类的 lua 模块。包装器的生成和编译(使用 -Wall)没有任何问题。但是,在我发现的几个地方,我遇到了以下问题:成员数据的基本分配失败。
如果我运行:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require('myModule')
> a = myModule.ClassA()
然后我可以验证附加到“a”的元表是否包含其所有成员数据(在本例中,字段“b”和“c”分别属于类类型 ClassB 和 ClassC。)
我可以进一步做:
> a.b = myModule.ClassB()
它成功地将 b 重新分配给 ClassB() 的新实例。但是,当我去做时:
> a.b.c = myModule.ClassC()
我收到错误消息:
Error in ClassB_c_set (arg 2), expected 'ClassC *' got 'ClassB *'
好像“=”右侧的表达式是与包含要重新分配的数据字段的元素具有相同类型的对象。我确定我一定错过了一些简单的东西,但是我已经把头撞在墙上几个小时了,但无济于事。
有人有什么想法吗?谢谢!