正确的软件工程方法使Lua绑定到我的C ++类?

时间:2010-06-19 00:47:31

标签: scripting lua software-design

我正试图找出用Lua注册我的C ++ Classes构造函数的最佳方法(从软件设计角度来看,编码视角)

我该怎么做?

我的想法:

1)制作某种“init Lua bindings”文件,它绑定了我想在Lua中使用的每个C ++构造函数? (问题:此文件会变得越来越大,难以同步/调试)

2)每个类都负责使用我的“LuaManager”类注册它自己的构造函数 (问题:将相同的构造函数一遍又一遍地绑定到Lua对于同一类A类是愚蠢的,所以理想情况下,脚本化类的每个应该绑定它是Lua的构造函数只有一次使用这种方法。)

非常欢迎想法或意见。

2 个答案:

答案 0 :(得分:1)

我明白你的意思是

  

从软件设计的角度来看,   不是编码视角

但是我不确定两者之间有明显的区别。或者,更准确地说,您采用的编码方法将决定您的设计选项。例如,如果您使用SWIG,那么您的问题中的选项实际上没有意义,因为您编写了一个单独的“接口”文件。如果您正在使用luabind,那么选项确实有意义,但在这种情况下我肯定会选择1)因为luabind标头会大大减慢编译速度,并且我希望将它们包含在尽可能少的编译单元中。如果你的“编码”方法没有那个luabind缺点那么2)似乎是更明智的事情。

答案 1 :(得分:0)

你的第二种方法会很好用。避免多次注册的一种方法是使用静态初始化列表方法。每个类都会将一个Lua注册函数添加到静态std :: set pre-main。然后,当您的应用程序启动时,您将遍历此std :: set,并将每个类构造函数绑定添加到您的Lua运行时。这将确保您的类绑定只注册一次。