在C++和sol3中,我的代码如下所示
sol::state _state;
void Func1()
{
auto userType1 = _state.new_usertype<Test>("Test", sol::constructors<Test()>());
userType1["testFunction1"] = &test1;
}
void Func2()
{
auto userType2 = _state.new_usertype<Test>("Test", sol::constructors<Test()>());
userType2["testFunction2"] = &test2;
}
int main()
{
Func1();
Func2();
}在lua脚本中,我只能调用Test.testFunction2,这意味着userType2覆盖userType1。lua脚本看不到testFunction1。我想知道,如果存在,是否有一种返回userType的方法,如果没有,则创建它。然后我可以同时打电话给testFunction1和testFunction2。如下代码所示。
void Func1()
{
auto userType1 = _state.CreateOrGetUserType<Test>("Test", sol::constructors<Test()>());
userType1["testFunction1"] = &test1;
}
void Func2()
{
auto userType2 = _state.CreateOrGetUserType<Test>("Test", sol::constructors<Test()>());
userType2["testFunction2"] = &test2;
}发布于 2022-08-05 00:58:00
首先检查_state["Test"]是否存在(如果您真的疑神疑鬼,请检查它是否是一个表)。如果是这样的话,使用它来构造一个sol::usertype<Test>,您可以在其中添加第二个函数。如果不是,创建一个新的用户类型就像你正在做的那样。
https://stackoverflow.com/questions/72962673
复制相似问题