gpt4 book ai didi

automatic-ref-counting - C++ 类 "cannot be shared between ARC and non-ARC code…"

转载 作者:行者123 更新时间:2023-12-01 12:51:36 26 4
gpt4 key购买 nike

编译 Objective-C++,我得到以下诊断信息:

'MyClass' cannot be shared between ARC and non-ARC code; add a non-trivial copy assignment operator to make it ABI-compatible

缺少复制构造函数和析构函数会出现类似的错误。添加必要的方法很容易,但通常它们没有意义,特别是对于我想要使其不可复制的类,并且我不混合 ARC 和非 ARC 代码(至少不是故意的)。

为什么我会收到此消息,我是否可以在不为所有 C++ 类编写毫无意义的成员函数的情况下摆脱它?

最佳答案

这是因为 ARC 在 POD 中不鼓励使用 Objective-C 对象结构和 C++ 类,因为它们的包含使得管理它们的内存不明确。您可以通过在 Objective-C 成员前面加上 __unsafe_unretained 限定符来解决它,这会告诉 ARC 让它的粘手指远离类,但让您处于必须管理成员内存的尴尬境地反对自己。此外,具有内部链接的对象不在警告范围内,因此将您的类或结构包装在不合格的 namespace { } 中也可以。如果您绝对必须在碰巧将 Objective-C 对象作为类成员的文件(或多个文件)中使用 ARC,则必须提供正确的访问运算符(如警告所述),否则只需关闭 ARC 即可省去麻烦。

关于automatic-ref-counting - C++ 类 "cannot be shared between ARC and non-ARC code…",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105925/

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