首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测sol3中存在的用户类型?

如何检测sol3中存在的用户类型?
EN

Stack Overflow用户
提问于 2022-07-13 07:49:14
回答 1查看 84关注 0票数 0

在C++和sol3中,我的代码如下所示

代码语言:javascript
复制
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。如下代码所示。

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2022-08-05 00:58:00

首先检查_state["Test"]是否存在(如果您真的疑神疑鬼,请检查它是否是一个表)。如果是这样的话,使用它来构造一个sol::usertype<Test>,您可以在其中添加第二个函数。如果不是,创建一个新的用户类型就像你正在做的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72962673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档