MSVCで完全にコンパイルされたLLVMで以下の関数をコンパイルする際に問題があります。const void *からLLVMのテンプレートタイプへのキャスト問題がある
template<typename Fn>
Fn GetVFunction(const void *instance, std::size_t index) {
const auto vtable = *reinterpret_cast<const void***>(const_cast<void*>(instance));
return reinterpret_cast<Fn>(vtable[index]);
}
次のエラーが起こる:
"reinterpret_cast from 'const void *' to 'SDK::UObject *(*)(SDK::UClass *)' casts away qualifiers"
は、私の周りを見て、それは同じ問題が生じたfollowing-
return const_cast<Fn>(reinterpret_cast<const Fn>(vtable[index]));
を行うことが示唆されました。
助けていただけたら幸いです!
あなたは 'const_cast(インスタンス)'を実行します。どのようにこのエラーがあなたにはっきりしていないのですか? –
StoryTeller
reinterpret_castを 'const void *'から 'const void ***'に変更すると、修飾子がキャストされなくなります。基本的に同じ問題がコードのすぐ前にあります。元のエラーは最終行で発生しました。 – TJ8
"*これは同じ問題を引き起こした*" - それは不可能です。その2番目のケースでエラーを表示してください。 – rustyx