我正在尝试使用可以打印出一些成员值的成员函数创建一个简单的类,但是当我尝试引用“self”时出现错误:
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
,但我得到了类似的错误。我在这里做错了什么?
编辑:
忘了提我printName()
从 C++ 代码中调用函数。如果我从 Lua 调用该函数,它可以正常工作。
在 Lua 中创建 Test 对象并完成回调函数。回调在 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
。只有当我尝试这样做时才会出现错误。