我可能会误解他们的使用或误读文档,但是如何访问结构或类的成员作为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;
};
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top