Scripting 使用正确的软件工程方法将Lua绑定到my C++;上课? 我试图找出用Lua登记C++类构造函数的最佳方法(从软件设计的角度看,不/强>编码透视)< /P>

Scripting 使用正确的软件工程方法将Lua绑定到my C++;上课? 我试图找出用Lua登记C++类构造函数的最佳方法(从软件设计的角度看,不/强>编码透视)< /P>,scripting,lua,software-design,Scripting,Lua,Software Design,我该怎么做 我的想法是: < P > 1)生成一种“init Lua绑定”文件,它绑定了我希望在Lua中使用的每个C++构造函数。(问题:此文件会越来越大,难以同步/调试) 2) 每个类负责向我的“LuaManager”类注册自己的构造函数 (问题:对于同一种类的类,反复将同一个构造函数绑定到Lua是愚蠢的,因此理想情况下,每一种可脚本类在使用这种方法时只应将其构造函数绑定到Lua一次。) 想法或意见是非常受欢迎的。我理解你问的意思 从软件设计的角度来看, 不是编码透视图 然而,我不确定两者之间

我该怎么做

我的想法是:

< P > 1)生成一种“init Lua绑定”文件,它绑定了我希望在Lua中使用的每个C++构造函数。(问题:此文件会越来越大,难以同步/调试)

2) 每个类负责向我的“LuaManager”类注册自己的构造函数 (问题:对于同一种类的类,反复将同一个构造函数绑定到Lua是愚蠢的,因此理想情况下,每一种可脚本类在使用这种方法时只应将其构造函数绑定到Lua一次。)


想法或意见是非常受欢迎的。

我理解你问的意思

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


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

我理解你问的意思

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


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

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

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

看起来很有趣,您能告诉我更多详细信息吗?谢谢。看起来很有趣,你能告诉我更多细节吗?谢谢