[UE] Bug: 静态绑定 UGameplayTagsManager的Get函数报错2
Closed this issue · 6 comments
前置阅读 | Pre-reading
Puer的版本 | Puer Version
1.0.6.p1
UE的版本 | UE Version
5.1.1
发生在哪个平台 | Platform
Editor(win)
错误信息 | Error Message
Source\JsEnv\Public\StaticCall.hpp(670): error C2248: 'UGameplayTagsManager::UGameplayTagsManager': cannot access private member declared in class 'UGameplayTagsManager'
D:\Program Files\UE\5.1\5.1.1\23073100\Engine\Source\Runtime\GameplayTags\Classes\GameplayTagsManager.h(298): note: see declaration of 'UGameplayTagsManager::UGameplayTagsManager'
1>D:\Program Files\UE\5.1\5.1.1\23073100\Engine\Plugins\Runtime\GameplayAbilities\Source\GameplayAbilities\Public\GameplayCueTranslator.h(14): note: see declaration of 'UGameplayTagsManager'
1>D:\pw_cn_cn\trunk\Plugins\Puerts\Source\JsEnv\Public\StaticCall.hpp(833): note: see reference to function template instantiation 'bool puerts::internal::FuncCallHelper<API,std::pair<Ret,std::tuple<>>,false,true,true,false>::call<UGameplayTagsManager&(__cdecl *)(void),,>(Func &,puerts::v8_impl::API::CallbackInfoType,std::integer_sequence<size_t>)' being compiled
1> with
1> [
1> API=puerts::v8_impl::API,
1> Ret=UGameplayTagsManager &,
1> Func=UGameplayTagsManager &(__cdecl *)(void)
1> ]
1>D:\pw_cn_cn\trunk\Plugins\Puerts\Source\JsEnv\Public\StaticCall.hpp(844): note: see reference to function template instantiation 'bool puerts::internal::FuncCallHelper<API,std::pair<Ret,std::tuple<>>,false,true,true,false>::call<UGameplayTagsManager&(__cdecl *)(void),,>(Func &,puerts::v8_impl::API::CallbackInfoType,std::integer_sequence<size_t>)' being compiled
1> with
1> [
1> API=puerts::v8_impl::API,
1> Ret=UGameplayTagsManager &,
1> Func=UGameplayTagsManager &(__cdecl *)(void)
1> ]
1>D:\pw_cn_cn\trunk\Plugins\Puerts\Source\JsEnv\Public\StaticCall.hpp(945): note: see reference to function template instantiation 'bool puerts::internal::FuncCallHelper<API,std::pair<Ret,std::tuple<>>,false,true,true,false>::call<UGameplayTagsManager&(__cdecl *)(void),>(Func &&,puerts::v8_impl::API::CallbackInfoType)' being compiled
1> with
1> [
1> API=puerts::v8_impl::API,
1> Ret=UGameplayTagsManager &,
1> Func=UGameplayTagsManager &(__cdecl *)(void)
1> ]
1>D:\pw_cn_cn\trunk\Plugins\Puerts\Source\JsEnv\Public\StaticCall.hpp(948): note: see reference to function template instantiation 'bool puerts::internal::FuncCallHelper<API,std::pair<Ret,std::tuple<>>,false,true,true,false>::call<UGameplayTagsManager&(__cdecl *)(void),>(Func &&,puerts::v8_impl::API::CallbackInfoType)' being compiled
1> with
1> [
1> API=puerts::v8_impl::API,
1> Ret=UGameplayTagsManager &,
1> Func=UGameplayTagsManager &(__cdecl *)(void)
1> ]
问题重现 | Bug reproduce
puerts::DefineClass()
.Function("Get", MakeFunction(&UGameplayTagsManager::Get))
.Register();
经测试返回值是指针能 正常绑定,返回值是引用 就会有类似报错
是1.0.4没问题,1.0.5有问题?
1.0.5没问题,1.0.6.p1 有问题
这个修改引入的:f95a807
StaticCall已经用了最新的这份代码
FORCEINLINE static UGameplayTagsManager& Get()
绑定报错的是这样一个函数 ,同文件引入了