0

我在 C++ 中有这个数据结构(结构):

struct Vector3f
{
    float x;
    float y;
    float z;

    Vector3f()
    {
    }

    Vector3f(float _x, float _y, float _z)
    {
        x = _x;
        y = _y;
        z = _z;
    }
};

我最近一直在学习和使用Objective-C。我发现有很多我在 Objective-C 中做不到的事情在 C++ 中可以做到。所以,我希望能够在 Objective-C 中使用构造函数来做到这一点。我知道 Objective-C 不支持像 C++ 这样的函数重载。因此,不需要第一个构造函数。

4

1 回答 1

1

您只需使用三个属性:

@interface Vector : NSObject

@property(nonatomic, assign) float x, y, z;

- (id)init;
- (id)initWithX:(float)x y:(float)y z:(float)z;

@end

@implementation Vector

- (id)init {
    // Members default to 0 implicitly.
    return [super init];
}

- (id)initWithX:(float)x y:(float)y z:(float)z {
    if (self = [super init]) {
        self.x = x;
        self.y = y;
        self.z = z;
    }

    return self;
}

@end

请注意,init这里的覆盖是可选的,因为它所做的只是调用超类的init方法。

于 2013-11-01T22:25:45.420 回答