gpt4 book ai didi

c++ - 在启用 ARC 的情况下使用 reinterpret_cast

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:05 25 4
gpt4 key购买 nike

我在支持 ARC 的 Objective-C 项目中包含了一个库的头文件。

我知道库没有在启用 ARC 的情况下编译,但问题出在库的头文件上,特别是这些行:

template <typename Type_>
static inline Type_ &MSHookIvar(id self, const char *name) {
Ivar ivar(class_getInstanceVariable(object_getClass(self), name));
void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
return *reinterpret_cast<Type_ *>(pointer);
}

我收到这个错误:

Cast of an Objective-C pointer to 'char *' is disallowed with ARC

是否可以修复此错误?

整个头文件可以在这里找到:http://puu.sh/sTrH

最佳答案

你需要把pointer的初始化改成这样:

void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>((__bridge void *)self) + ivar_getOffset(ivar));

关于c++ - 在启用 ARC 的情况下使用 reinterpret_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com