利用luabind将Lua嵌入到C++项目中(二)

本文介绍了在使用luabind将Lua嵌入到C++项目中时,遇到的默认参数和空值(nil)处理问题。包括默认参数在Lua中必须显式提供,字符串NULL与nil的区别,以及C++对象指针与nil的转换。解决方案包括在C++函数中添加对空字符串和NULL的判断,并在Lua中用空字符串代替nil调用函数。

         第二篇——语言差异及解决方案(初级篇)

By : HengStar(欣恒)

 

 原文链接:http://blog.csdn.net/gongxinheng/archive/2009/07/26/4381217.aspx

 

通过上一篇的介绍,我们已经了解到了luabind的基本架设方法了,本篇将会用我自己在实践中的经验,通过举例来说明一些实际开发中可能会遇到的语言差异上带来的一些问题及个人尝试过的解决方案。

 

一.   默认参数 VS 参数个数严格匹配
众所周知,C++中的默认参数能给我们带来很大程度上的便利,观察以下代码:

PS:
这个函数声明只是突发地想到的,没什么特别的含义(因为我自己也养了条可爱的小狗^^),假设我们养了很多狗,也可能是开了一个宠物培训基地^^我们给狗喂食的时候通过dogName来确定给哪只狗喂,喂的食物类型foodType有默认参数FOOD_DOGFOOD(因为我通常只给它吃狗粮),然后我要调用此函数的时候经常会这样写feedDog( “豆豆” );使用缺省食物类型参数,由于习惯问题,我通过luabinddef("feedDog", &feedDog)将该函数注册到Lua中使用仍然用feedDog( “豆豆” )调用,结果在执行Lua脚本时候出现错误:”No matching overload found, candidates : bool feedDog(char const*, int)” 也就是该调用没有找到匹配的重载函数,但是有候选的两个参数的feedDog函数,好了,到这里大家应该看出来是怎么回事了吧,暂且不说在C++中定义的宏FOOD_DOGFOOD不能在Lua中使用,即使你用数字0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值