0

所以我仍在为这个学校项目开发一个灵活的脚本系统,但遇到了障碍。问题是这样的:我有一个脚本状态管理器接口,任何脚本状态都会实现(目前正在实现 lua,但希望以后能够添加 python)。它对 DoFile、DoString、RegisterObject 和 RegisterFunction 等具有纯虚函数。所以 LuaStateManager 使用 luaplus 类实现了这个接口,并按照它应该的方式封装了 LuaState 对象。

因此,当一个对象向 lua 注册自己并将其所有方法扔到一个元表中时,我必须执行以下操作:

metaTable.RegisterObjectDirect(“Move”, (Actor*)0, &Actor::Move);

如果我可以访问 StateManager 接口中的底层状态对象,这会很好,因为它将从 Actor 类本身调用,因此可以保证强制转换。不幸的是,我需要以某种方式将此信息传递给 LuaState::RegisterFunction 方法,这样我就不必公开 LuaState 对象并将我的类与其耦合。据我所知,没有办法传递有关要转换为哪种类型的类的信息。

有没有机构有任何建议?我曾想过尝试使用模板化函数来执行强制转换,但我知道你不能拥有指向模板的函数指针,所以这是不可能的。谢谢!

4

0 回答 0