需要接受歧义参数的接口方法?

时间:2015-01-21 19:39:39

标签: c++ lua luaplus

不确定如何正确地解释帖子标题的问题。这是我遇到的问题。我们有一个接口,将由我们的LuaStateManager类实现,以将函数注册到LuaPlus::LuaState。问题是这些功能可能有任何签名。

LuaPlus允许您使用LuaObject::RegisterDirect方法注册任何函数。它可以这样做,因为它使用模板。但是,我们必须将LuaState封装在具有纯虚函数的接口中。

所以我们的想法是拥有一个LuaStateManager将实现的功能:

IScriptState::RegisterFunction( /* What should go here? */ ) 

正如您可能看到的那样,没有办法指定应该将哪种类型的参数传递给此函数,因为它可能是任何函数签名。我们不能使用LuaPlus这样的模板,因为虚函数不能模板化。我们无法模拟整个LuaStateManager类或IScriptState接口,因为对于传递的每种类型的函数,它将生成一个全新的脚本状态,并且所有函数都不会驻留在一起。

过去如何解决这样的问题?目前我们正在使用一种暴力方法,只是将所有导出抛出到用户可以从中派生并填写的结构中。这样他们就会知道他们正在使用哪种脚本语言,并且能够直接使用LuaStateManager而不是IScriptState接口,但这完全是一种草率的“黑客”解决方案。

0 个答案:

没有答案