Lua encapsulation class

Lua encapsulation class

本文关键字:class encapsulation Lua      更新时间:2023-10-16

我实际上试图在C++中创建一个类来封装Lua调用,实际上试图封装一个函数以在构造函数上加载Lua脚本,但主要问题是当我尝试对Lua脚本进行函数调用时,我找不到如何存储多个返回值以及如何正确推送所有参数。

我试图找到一个函数的实现的想法,该函数使用任意数量的任何类型的参数调用lua fonction,(该函数将推送参数并调用函数,但我不希望动态强制转换例如知道我是否必须"lua_pushnumber"或例如推送字符串。

您可以尝试在构造函数中接受某种类型的变体类的数组,并使用它们的类型来确定如何将它们泵入 Lua。 另一方面,C/C++ 和 Lua 之间实际上只有两种类型可以互换:字符串和数字/双精度。 一个可能的解决方案是传入一个字符串数组(或者一个字符**和一个整数,如果你愿意的话(,把你的双精度作为字符串传递。

然后,您可以通过在字符串"return"之后附加字符串或双精度的字符串表示来执行loadstring((调用。 当你执行由 loadstring(( 推送到堆栈的函数时,lua 引擎会将你的变量(具有适当类型的字符串或双精度(推送到 lua 堆栈。 你会有字符串解析你的替身的开销,但如果你渴望速度,我敢打赌你无论如何都会纯粹用C++编码:) 这种方法的优点是你实际上也可以这样传入一个函数:(即"return function(( print("hello"(;完"(