题
我可能会误解他们的使用或误读文档,但是如何访问结构或类的成员作为Luight userData?例如,如果使用以下结构的向量
typedef struct Foo {
int x;
int y;
} Foo;
被声明为“测试”,定义为x = 413和y = 612,并用呼叫推动
lua_pushlightuserdata( L, (void *) &test ) ;
操纵或打印X和Y的函数的LUA代码将是什么样的?
解决方案
LUA中的Light UserData只是一个指针。 Lua对如何读取指针引用的对象的内容不了解。此数据的目的是允许一个C API调用来传递对另一个API调用的引用。
如果您想使用LUA中的数据,则需要将其推到堆栈上,在您的情况下,我会将其制成桌子。如果您需要在C和LUA之间同步的此数据,那么您需要在双方编写功能来处理分配并将值复制到其他环境中。另一个选项是仅在C中使用LUA中的数据并通过LUA API检索,或在C中将其通过C中的C API(您将创建)在LUA中进行检索。
了解更多信息, LUA编程 和 Lua-users Wiki 每个都有简短的描述。
其他提示
没有什么。您无法使用LUA的任何userData访问或执行任何操作。您必须为所有操作提供C ++功能。当然,通过正确使用元功能可以使这更容易。
哦,你不需要 typedef struct
C ++中的废话。你可以说
struct Foo {
int x;
int y;
};
不隶属于 StackOverflow