将C++对象导出到lua,C++和lua的相互调用

此例演示了如何将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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值