Я пытаюсь создать простой класс с функцией-членом, которая будет печатать некоторые значения-члены, но я получаю ошибки, когда пытаюсь ссылаться на «я»:Невозможно получить функцию Lua для ссылки «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
, но я получаю подобную ошибку. Что я здесь делаю неправильно?
EDIT:
Забыл упомянуть, что я называю printName()
функцию из кода C++. Если я вызываю функцию из 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' * * правильный синтаксис. Лемм управляет им. –
Показать код, используемый для вызова его из C++. Вы нажимаете параметр 'self' в стеке? (C API не имеет понятия ':' call!) –
А теперь * вы забыли сказать, что используете luabridge? !!?! *. Пожалуйста, снова прочитайте раздел «about». И я рекомендую использовать [** Sol **] (https://github.com/Rapptz/sol) вместо этого, luabridge чрезвычайно мех, на мой взгляд. –