1

我试图找出用 Lua 注册我的 C++ 类构造函数的最佳方法(从软件设计的角度,而不是编码的角度)

我该怎么做?

我的想法:

1) 制作某种“初始化 Lua 绑定”文件,该文件绑定我希望在 Lua 中可用的每个 C++ 构造函数?(问题:这个文件会变得越来越大并且难以同步/调试)

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

非常欢迎想法或意见。

4

2 回答 2

1

我明白你问的意思

从软件设计的角度,而不是编码的角度

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

于 2010-06-19T08:58:06.683 回答
0

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

于 2010-08-19T00:45:34.013 回答