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 を学習して使用しています。C++ ではできて、Objective-C ではできないことがたくさんあることがわかりました。ですから、コンストラクターを使用して Objective-C でこれを実行できるようにしたいと考えています。Objective-C が C++ のような関数のオーバーロードをサポートしていないことは承知しています。したがって、最初のコンストラクターは必要ありません。

4

1 に答える 1

1

You would simply use three properties:

@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

Note that overriding init here is optional, since all it does is calling the superclass’ init method.

于 2013-11-01T22:25:45.420 に答える