一個完整的例子試驗了一個完整的例子。在C++中生成一個類,注冊到lua。從lua調用C++類的成員函數。在Alternate.lua中寫了階乘函數factorial。從C++中調用factorial。Alternate.lua如下:print("nowinalternate.lua");print("initialnumberofAxhSystem:"..AxhSystem:GetNumber());Axh" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

LuaPlus學習(四)

系統 1635 0

<--!版權所有foruok,轉載注明出處!-->

一個完整的例子

試驗了一個完整的例子。 在C++中生成一個類,注冊到lua。 從lua調用C++類的成員函數。 在Alternate.lua中寫了階乘函數factorial。 從C++中調用factorial。 Alternate.lua如下:
print( " nowinalternate.lua " ); print( " initialnumberofAxhSystem: " ..AxhSystem:GetNumber()); AxhSystem:SetNumber( 15 ); print( " Changethenumberfromlua,new: " ..AxhSystem:GetNumber()); print( " NowSetmessageto'Helloworld' " ); AxhSystem:SetMessage( " Helloworld " ); print( " AxhSystem:GetMessagereturn: " ..AxhSystem:GetMessage()); print( " now,enteranumbertochangeAxhSystem'snumber: " ); num = io.read( " *number " ); print( " youenter: " ..num); print( " settoAxhSystem " ) AxhSystem:SetNumber(num); print( " AxhSystem'snewnumber= " ..AxhSystem:GetNumber()); functionfactorial(n) if (n == 0 )then return 1 ; else return n * factorial(n - 1 ); end end
C++代碼如下:
class CAxhSystem ... { public : CAxhSystem():m_nNumber( 0 ) ... { memset(m_szMsg, 0 , sizeof (m_szMsg)); } ~ CAxhSystem() ... { } void SetNumber( int num) ... { m_nNumber = num; } int GetNumber() ... { return m_nNumber; } void SetMessage( const char * szMsg) ... { if (szMsg) _tcsncpy(m_szMsg,szMsg, 256 ); } char * GetMessage() ... { return m_szMsg; } protected : int m_nNumber; char m_szMsg[ 256 ]; } ; CAxhSystemg_system; LuaStateOwnerg_state; LuaObjectg_globalObj; int InitLua() ... { g_state -> OpenLibs(); g_globalObj = g_state -> GetGlobals(); return 0 ; } int RegisterObject() ... { LuaObjectaxhmetaobj = g_globalObj.CreateTable( " AxhMetaTable " ); axhmetaobj.SetObject( " __index " ,axhmetaobj); // registerfunctor axhmetaobj.RegisterObjectDirect( " SetNumber " ,( const CAxhSystem * ) 0 ,CAxhSystem::SetNumber); axhmetaobj.RegisterObjectDirect( " GetNumber " ,( const CAxhSystem * ) 0 ,CAxhSystem::GetNumber); axhmetaobj.RegisterObjectDirect( " SetMessage " ,( const CAxhSystem * ) 0 ,CAxhSystem::SetMessage); axhmetaobj.RegisterObjectDirect( " GetMessage " ,( const CAxhSystem * ) 0 ,CAxhSystem::GetMessage); // getluaobject LuaObjectluasys = g_state -> BoxPointer( & g_system); luasys.SetMetaTable(axhmetaobj); g_globalObj.SetObject( " AxhSystem " ,luasys); return 0 ; } int _tmain( int argc,_TCHAR * argv[]) ... { InitLua(); RegisterObject(); g_state -> DoFile( " Alternate.lua " ); LuaFunction < int > factorial = g_state -> GetGlobal( " factorial " ); printf( " Nowcall'factoral'inAlternate.lua,enteranumber: " ); int number; scanf( " %d " , & number); printf( " Youennter%d,it'sfactorial=%d " ,number,factorial(number)); return 0 ; }
OK,到這里已經可以在lua和c++之間做一些交互了,可以根據需要實現我們的目標了。 接下來我要好好學習lua了,不然沒辦法用它來寫復雜的邏輯。 <--!版權所有foruok,轉載注明出處!-->

LuaPlus學習(四)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美三级 在线播放 | 青娱乐综合 | 亚洲 欧美 日韩在线 | 亚洲欧美中文日韩在线v日本 | 国产自产在线 | 黄色精品视频 | 色综合图 | 毛片99| 欧洲一级毛片 | 激情五月色婷婷在线观看 | 亚洲国产精品一区二区第一页 | 久久亚洲精品国产精品紫薇 | 国精品日韩欧美一区二区三区 | 四虎伊人| 99久久久国产精品 | 黄色影片在线免费观看 | 色呦呦免费 | 国产一区二区久久精品 | 久久草在线 | 午夜电影通 | 日本精品二区 | 天天夜夜人人 | 国产成+人+亚洲+欧美+日韩 | 欧美精品亚洲一区二区在线播放 | 看全色黄大色黄大片色黄看的 | 午夜精品久久久久久 | 亚洲精品综合网 | 久久秋霞理论电影 | 久久se精品一区二区国产 | 麻豆一二区 | 亚洲精品黄色 | 操免费视频| 在线一级片 | 亚洲一区影院 | 色人阁亚洲 | 亚洲午夜电影 | 四虎永久免费网站入口2020 | 日韩精品视频免费 | 一区二区中文 | 亚洲精品在线播放视频 | 另类综合网|