这不是重复,请阅读全文!
我不确定标题是否正确,但我会在此更详细地解释。
我有一个带有一些函数,变量和属性的C ++类(C ++ Builder)。在Lua中,我有一个反映变量和属性的简化表。
示例:
class foo {
private:
// Other private members and functions
public:
int x;
int y;
String caption;
};
当我创建类foo的实例时,我创建并将相应的表推送到lua全局环境。我将拥有一个包含所有实例的全局Lua表,但为了简化示例,我们暂时跳过全局表并专注于单个实例。 Lua表示foo实例:
foo = { x, y, caption }
现在手头有“问题”。在Lua中,foo表只是C ++类实例的代理,所以当我在Lua中执行此操作时...
foo.caption = "My caption"
... foo的C ++类实例将设置其变量标题。 相反的是(Lua)......
打印(foo.x)
...将打印类实例foo的变量x的值。
我整天都使用Google搜索,大多数示例使用其他库和包装器而不解释其背后的机制。
我已经明白我需要使用元表和lightuserdata,但这是否意味着我必须为每个变量定义getter / setter并使用foo.GetX和foo.SetCaption来访问它们?这将是很多getter / setter。
某人可以解释如何在不使用第三方库 的情况下在C ++ / Lua 之间建立此连接?
编辑: 更新了标题并明确表示这不是重复,因为@Sombrero Chicken认为。