此例演示了如何将C++对象导出到lua,并且可以在lua脚本中给这个导出对象添加新方法。C++所编写的对象方法和lua脚本所编写的对象的方法在两种语言中都可以互相调用。
此例演示了如下特征:
导出方法写在Lunar<Account>::RegType Account::methods[]数组中
Register函数将导出对象的方法存储在lua的全局表中,key为对象的类名称。
push函数在lua栈上创建一个userdata
call函数调用这个userdata
我这里只是读代码,详情请参考:http://lua-users.org/wiki/CppBindingWithLunar
h文件
cpp文件
代码中用到的args文件
function printf(...) io.write(string.format(unpack(arg))) end
function Account:show()
printf("Account balance = $%0.02f/n", self:balance())
end
parent = {}
function parent:rob(amount)
amount = amount or self:balance()
self:withdraw(amount)
return amount
end
luaobj = Account(1000)
getmetatable(Account).__index = parent
function main()
print('a =', a)
print('b =', b)
print('metatable =', getmetatable(a))
print('Account =', Account)
table.foreach(Account, print)
a:show()
a:deposit(50.30)
a:show()
a:withdraw(25.10)
a:show()
a:rob(100)
a:show()
debug.debug()
end