我有一个带有自定义构造函数的C ++类。
struct Inner {
int i_;
Inner(int i): i_(i) {}
};
我想将它用作Objective-C类的自动成员。
如果我在C ++中做同样的事情,我会将参数传递给初始化列表中的成员构造函数:
class Outer {
Inner inner_;
public:
// Automatic member variables with custom constructors must
// be initialized in the parent struct's initialization list.
Outer(int i): inner_(i) {}
// This will cause an error
//Outer() {}
int val() { return inner_.i_; }
};
在Objective-C中,它看起来像这样:
@interface Outer () {
Inner inner_;
}
@end
@implementation Outer
- (instancetype)initWithValue:(NSInteger)i
{
self = [super init];
if (self) {
// ...
}
return self;
}
- (NSInteger)val {
return inner_.val();
}
但是我不知道在哪里可以将值传递给Inner的构造函数,因为Objective-C没有初始化列表。否则会生成编译器错误"No matching constructor for initialization of 'Inner'"
。
有没有办法实现这个目标?在我的情况下,inner_
应该与Outer
具有相同的生命周期,而我宁愿不必将它指向一个必须在堆上手动分配并在{{1 }}