我可能误解了它们的使用或误读了文档,但是如何访问作为轻用户数据传递给 Lua 的结构或类的成员?例如,如果使用以下结构的 vector

typedef struct Foo {
  int x;
  int y;
} Foo;

被声明为“测试”并定义为类似 x = 413 和 y = 612 的内容,并通过调用推送
lua_pushlightuserdata( L, (void *) &test ) ;

操作或打印 x 和 y 的函数的 Lua 代码是什么样的?

最佳答案

Lua 中的轻量用户数据只是一个指针。 Lua 不了解如何读取指针引用的对象的内容。此数据的目的是允许一个 C API 调用将引用传递给另一个 API 调用。

如果你想在 Lua 中处理数据,你需要把它压入堆栈,在你的情况下,我会把它做成一个表。如果您需要在 C 和 Lua 之间同步这些数据,那么您需要在双方编写函数来处理赋值并将值复制到另一个环境。另一种选择是只在 Lua 中拥有数据并在 C 中通过 Lua API 检索它,或者在 C 中拥有它并在 Lua 中通过 C API(您将创建)检索它。

有关详细信息,Programming in LuaLua-users Wiki 各有简要说明。

关于c++ - 在 Lua 中访问 Light 用户数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6308135/

10-13 06:50