使用LUAPlus将Lua表函数绑定到C++变量

我想使用LUAPlus将Lua表函数链接到C ++变量。到目前为止,在网上找到的信息中,我已经使用 DoString(“tableName:functionName”)调用了一个表函数,但是我想能够通过变量调用函数。我知道这是可能的,但我不知道我在做错了什么。

在我添加的代码中,“pLuaState->DoString(“table1:prints()”)”正常工作,并按需要打印所有内容。当我尝试获取函数并使用func变量调用它时,我的程序会崩溃,并出现错误消息 。

如果我从Lua中的prints()函数中删除所有打印,除了“print(”in prints“)”,一切都正常。基于此,我假设GetByName(”functionName“)返回一个不包含其父表引用的函数。这就是我卡住的地方。

希望能提供帮助。

点赞
用户258523
用户258523

你说得对。函数并不知道它们的“父级”或“对象”或任何东西。这就是为什么存在 : 调用语法的原因。调用 table1:prints() 等同于 table1.prints(table1)(只有lua保证 table1 只被评估一次)。

因此,如果您直接从表格等地方获取函数并直接调用它,您需要确保将正确的表格等作为第一个参数传递(在函数期望的任何其他参数之前)。

2015-04-23 13:07:50