一個完整的例子試驗了一個完整的例子。在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條評論
主站蜘蛛池模板: 毛片av网| 亚洲片在线观看 | 国产毛片片精品天天看视频 | 亚洲jizzjizz妇女 | 日韩在线第二页 | 日韩欧美在线免费观看 | gogo全球大胆高清人露出91 | 亚洲成人激情av | 九热精品 | 天天操天天操天天操天天操 | 一级片网址 | 国产高清毛片 | 九月婷婷开心九月 | 成人国产一区二区三区 | 亚洲欧美久久婷婷爱综合一区天堂 | 妈妈的朋友酷客影响 | 一区二区三区回区在观看免费视频 | 色婷婷亚洲五月色综合色 | 九九在线精品视频播放 | 国产又黄又猛又粗又爽的A片动漫 | 国产九九精品视频 | 日本高清午夜色wwwσ | 色中色在线播放 | 日日操夜夜透 | 天天狠狠色噜噜 | 日韩在线观看免费 | 久爱视频www在线播放 | 国产精品啪一品二区三区粉嫩 | 波多野结衣免费观看视频 | 91福利小视频 | 亚洲精品无码成人A片九色播放 | 久久亚洲这里只有精品18 | 欧美 日本 国产 | 天天操天天碰 | 久久男人 | 日韩欧美视频一区二区在线观看 | 狠狠色婷婷丁香六月 | 精品国产免费久久久久久 | 国产精品乱码一区二三区小蝌蚪 | 婷婷尹人香蕉久久天堂 | 99久久久久久 |