将结构传递给类方法

时间:2011-04-12 03:52:31

标签: objective-c struct class-method

我希望能够做到这一点:

vec2 pos(1,5);
myActor.position = [Coord positionFrom: pos ];

使用我的结构:

typedef float32 float;
struct vec2 {
    vec2(float32 xx, float32 yy) {
        x = xx;
        y = yy;
    }
    float32 x, y;
};

Coord.h

@interface Coord : NSObject {
}
+(CGPoint) positionFrom: (vec2) pos;
+(CGPoint) positionFromAngle: (float32) angle;

Coord.mm

#import "Coord.h"
@implementation Coord
+(CGPoint) positionFrom:(vec2) pos {
    return CGPointMake( pos.x * 32, pos.y * 32);
}
+(CGPoint) positionFromAngle:(float32) angle {
    return CGPointMake( cos(angle) * 32, cos(angle) * 32);
}
@end

但是我得到了这些错误(在Coord.h中,在positionFrom行上):

Expected ')' before 'vec2'
Expected ')' before 'float32'

1 个答案:

答案 0 :(得分:0)

这应该是:

+(CGPoint) positionFrom: (struct vec2) pos;

否则您无法导入定义vec2的头文件。

]语句return中也有一个尾随positionFrom:

顺便说一下,从风格上来说,这种事情通常是用函数而不是类方法完成的。像这样:

CGPoint CGPointFromVec2( struct vec2 pos );

这使它与CGPointFromString()平行。