第二篇——语言差异及解决方案(初级篇)
By : HengStar(欣恒)
原文链接:http://blog.csdn.net/gongxinheng/archive/2009/07/26/4381217.aspx
通过上一篇的介绍,我们已经了解到了luabind的基本架设方法了,本篇将会用我自己在实践中的经验,通过举例来说明一些实际开发中可能会遇到的语言差异上带来的一些问题及个人尝试过的解决方案。
一. 默认参数 VS 参数个数严格匹配
众所周知,C++中的默认参数能给我们带来很大程度上的便利,观察以下代码:
PS:这个函数声明只是突发地想到的,没什么特别的含义(因为我自己也养了条可爱的小狗^^),假设我们养了很多狗,也可能是开了一个宠物培训基地^^我们给狗喂食的时候通过dogName来确定给哪只狗喂,喂的食物类型foodType有默认参数FOOD_DOGFOOD(因为我通常只给它吃狗粮),然后我要调用此函数的时候经常会这样写feedDog( “豆豆” );使用缺省食物类型参数,由于习惯问题,我通过luabind的def("feedDog", &feedDog)将该函数注册到Lua中使用仍然用feedDog( “豆豆” )调用,结果在执行Lua脚本时候出现错误:”No matching overload found, candidates : bool feedDog(char const*, int)” 也就是该调用没有找到匹配的重载函数,但是有候选的两个参数的feedDog函数,好了,到这里大家应该看出来是怎么回事了吧,暂且不说在C++中定义的宏FOOD_DOGFOOD不能在Lua中使用,即使你用数字0