一個完整的例子試驗了一個完整的例子。在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條評論
主站蜘蛛池模板: 婷婷色香五月激情综合2020 | 久久中文字幕网站篠田优 | 日韩不卡一区二区 | 国产japan色系videos护士 日韩精品视频在线免费观看 | 亚洲97 | 康熙大帝1994蔺达诺版 | 国产成人av在线 | 中文字幕 国产 | www.av520| 天天操天天干天天爽 | 日本无码欧美激情在线视频 | 日韩精品一区二区三区 | 全免费A敌肛交毛片免费 | 久久国产精品免费网站 | 色人阁在线 | 极品嫩模私拍后被潜在线观看 | 日韩免费精品一级毛片 | 亚洲资源在线 | 欧美亚洲一区二区三区在线 | 日本激情视频一区二区三区 | 99热这里有精品 | 三级成人片 | 狠狠色欧美亚洲狠狠色五 | 欧美精品在线观看 | 欧美精品成人一区二区三区四区 | 色网在线 | 欧美一区二区三区不卡免费 | 成人综合在线观看 | 免费久久99精品国产婷婷六月 | 97久久国语露脸精品对白 | 亚洲黄色免费观看 | 国产欧美曰韩一区二区三区 | 射综合网 | 91精品国产一区二区 | 亚洲成a人v在线观看 | 国产精品久久久久久日本一道 | 欧美 亚洲 一区 | av天天看| 日韩欧美一区二区在线观看 | 草久久免费视频 | 亚洲高清一区二区三区 |