gpt4 book ai didi

C++ 引用类型作为 Objective-C++ 中的实例变量

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

C++ 引用类型作为实例变量在 Objective-C++ 中是被禁止的。我该如何解决这个问题?

最佳答案

您不能明智地使用引用作为实例变量,因为无法初始化实例变量并且无法重新设置引用。

替代方法可能是简单地使用(可能是智能的)指针。

让您更接近 C++ 类行为的另一种可能性是为您的 C++ 成员使用 PIMPL 样式的成员:

struct CppImpl {
SomeClass& ref;
CppImpl(SomeClass& ref) : ref(ref) {}
};

@interface A : NSObject {
CppImpl* pimpl;
}
- (id)initWithRef:(SomeClass&)ref;
@end

@implementation
- (id)initWithRef:(SomeClass&)ref {
if(self = [super init]) {
pimpl = new CppImpl(ref);
}
return self;
}
// clean up CppImpl in dealloc etc. ...
@end

关于C++ 引用类型作为 Objective-C++ 中的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746215/

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