我想创建一个简单的类与成员函数,将打印出一些成员的值,但我收到错误,当我尝试引用'自我':不能得到一个Lua函数来引用'自我'
attempt to index global 'self' (a nil value)
这里是我试图运行脚本:
Test = {}
function Test:new()
T = {}
setmetatable(T, self)
self.__index = self
self.Name = "Test Object"
return T
end
function Test:printName()
print("My name is " .. self.Name) -- This causes the error
end
我也试过self:Name
但我得到一个类似的错误。我在这里做错了什么?
编辑:
忘记提到我称之为从C++代码printName()
功能。如果我从Lua调用函数,它可以正常工作。
Test对象在Lua中创建并完成一个回调函数。回调就是所谓的C++这样的:
luabridge::LuaRef testObjectRef = ...; // This is populated from Lua, refers to the printName() function
testObjectRef(); // Calls the function
脚本回调像这样做:
-- in Test:new()
self.Callback = LuaCallback(self.printName)
Helper.setCallback(self.Callback)
本身工作正常,如果我不尝试指self
回调。只有当我尝试这样做时才会出现错误。
'self.Name' * *是正确的语法。让我来运行它。 – 2014-12-03 09:26:41
显示用于从C++调用它的代码。你在栈上推“self”参数吗? (C API没有':'调用的概念!) – 2014-12-03 09:30:42
现在*你忘记说你正在使用luabridge?!!?!*。请再次阅读“关于”部分。我建议使用[** Sol **](https://github.com/Rapptz/sol),而我认为,luabridge在我看来非常棒。 – 2014-12-03 09:33:58