【发布时间】:2016-07-05 09:43:51
【问题描述】:
使用自制的 Lua C++ 绑定,我能够创建可从 Lua 脚本获得的 C++ 类。
现在我想在 Lua 脚本中创建类对象,将其引用存储在 C++ 中,并在需要时从 C++ 代码中调用此 Lua 类对象的函数。
在 Lua 脚本中,我创建了一个带有全局函数的类对象,以将其传递给 C++ 代码。
MyClass = {}
function MyClass:hello()
debug.codeSite.sendMsg( "MyClass:hello()" )
end
function MyClass:new()
local tNewClass = {}
setmetatable( tNewClass, self )
self.__index = self
return tNewClass
end
local tClass = MyClass:new()
function getClass()
debug.codeSite.sendMsg( "Return class object" )
return tClass;
end
现在在 C++ 中,我想获取它的实例并调用函数 hello()。 这是我尝试过的:
- 调用 getClass() 将 Lua 对象(一个表)推入堆栈。
- 使用函数 lua_topointer() 将其地址存储到 C++ const void* 中。
此时不知道怎么把这个指针push回lua栈,所以把lua表push回栈,push函数名再调用。
所有这些的想法是在 Lua 脚本中创建多个对象并在 C++ 中使用它们。
在 lua 中:
tObject1 = MyClass:new()
tObject2 = MyClass:new()
在 C++ 中,需要时使用 tObject1:hello() 或 tObject2:hello()。
编辑:
根据这个description of lua_topointer(),将Lua表转换为C指针仅用于调试目的。
谢谢。
【问题讨论】: