LUA中Attempt to call a non-callable object或attempt to call field 'new' (a nil value)問題的解決

在使用tolua++將c++函數導出,可以被lua調用之後,編譯通過,但會報類似這樣的錯誤:

1,attempt to call field 'new' (a nil value)

在使用local aaa = MyClass:new()時會報這樣的錯誤

2,Attempt to call a non-callable object

在使用local aaa = MyClass()時會這麼報


原因是因爲MyClass的pkg文件中沒有聲明構造函數。

分析:我粗略地理解如下:

沒有在pkg中聲明->導致c++與lua的連接類沒有這個構造函數->導致在local aaa = MyClass()時,編譯器認爲你是想直接用這個類(不通過構造函數)

->所以告訴你他不可被調用


不知道這麼理解是否準確,請路過的大神指點。

發佈了35 篇原創文章 · 獲贊 11 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章