在2019年4月之前,Lua脚本可以使用字符串键__parent、__class、__propget和__propset来反映__parent类的方法和属性。这是一个非常有用的工具,用于创建测试脚本和开发工具,以维护导出到Lua中的大型类框架。
从LuaBridge的发行说明来看,字符串键似乎是出于安全原因被删除的。但是,我发现自己更重视从脚本中反映类的能力,而不是脚本是否能够在对象模型中运行。特别是在开发模式下。
LuaBridge参考手册暗示有一种让C/C++程序公开元数据的方法,但是我还没有弄清楚如何做到这一点。我对C和Lua (或LuaBridge)之间的接口非常陌生,所以我对自己感到困惑并不感到惊讶。如果有人能分享一个如何做到这一点的例子,我将不胜感激。
发布于 2021-10-19 15:22:37
由于似乎没有人有好的建议,我意识到我可以对属性、方法和常量的名称进行自己的反射。就我的目的而言,我实际上不需要执行或访问它们。
因此,我在框架中的每个类中都添加了__class、__propget和__propset静态属性,而不是在__class内部乱搞。它们返回一个用std::map实现的表,LuaBridge支持该表。表简单地以名称作为键和虚拟值。
我发现的一个警告是,在使用deriveClass创建派生类时,必须向派生类添加静态属性。如果以后尝试添加它们(使用beginClass),LuaBridge会抛出一个断言。
https://stackoverflow.com/questions/69571825
复制相似问题