Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Objective-C中此数据结构(C+;+;)的备选方案_C++_Objective C_Struct - Fatal编程技术网

C++ Objective-C中此数据结构(C+;+;)的备选方案

C++ Objective-C中此数据结构(C+;+;)的备选方案,c++,objective-c,struct,C++,Objective C,Struct,我用C++编写了这个数据结构(struct): 我最近一直在学习和使用Objto-C。我发现在ObjuleC中我不能做很多事情,我可以在C++中完成。所以,我希望能够在Objective-C中使用构造函数来实现这一点。我知道Objto-C不支持像C++那样的函数重载。因此,不需要第一个构造函数。您只需使用三个属性: @interface Vector : NSObject @property(nonatomic, assign) float x, y, z; - (id)init; - (i

我用C++编写了这个数据结构(struct):


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

您只需使用三个属性:

@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 < /Cord>方法.< /p>,那么您尝试了什么?我用变量做了一个简单的C++类结构。然后创建一个函数,输入三个变量,它将创建一个Vector3f结构,并分配每个变量,如:

vec3f.x=\ux。把矢量还给我谢谢你。这回答了我的问题。我会在你解决这个问题的时候给它做标记。如果这个类有可能被子类化,它应该有一个指定的初始值设定项,另一个初始值设定项应该在
self
上调用它。所以
-init
应该只执行
返回[self initWithX:0y:0z:0]
@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