可以使用Luabind向Lua公开的OO系统创建Lua类:
http://www.rasterbar.com/products/luabind/docs.html#defining-classes-in-lua
class 'MyClass'
function MyClass:__init()
self.a1 = true
self.a2 = "MyClass"
end
创建上面的类之后,如果我想要在Lua中添加的属性(即a1和a2),我会执行以下操作:
obj = MyClass()
info = class_info(obj)
print("Methods:")
for k,v in pairs(info.methods) do
print(k .. ': ' .. tostring(v))
end
print("Attributes:")
for k,v in pairs(info.attributes) do
print(k .. ': ' .. tostring(v))
end
但我只看到__init而没有属性。有没有办法获得属性a1& A2?
我在调试时已经介入了get_class_info()(参见https://github.com/luabind/luabind/blob/master/src/class_info.cpp#L33)
但是这个函数在退出之前似乎不会迭代多次。有谁知道luabind使用的对象格式?或者我如何提取这些属性?
注意:如果我用C ++创建一个类并通过Luabind公开它,那么我确实看到了我从C ++中公开的任何属性。它在Lua中的属性就是问题。