Передать структуру в метод класса - PullRequest
0 голосов
/ 12 апреля 2011

Я хотел бы иметь возможность сделать это:

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, на позиции из строк):

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

1 Ответ

0 голосов
/ 12 апреля 2011

Это должно быть:

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

Или же вам не удалось импортировать файл заголовка, который определяет vec2.

У вас также есть трейлинг ] в операторе return positionFrom:.

Кстати, просто стилистически такие вещи обычно выполняются с помощью функции, а не метода класса. Примерно так:

CGPoint CGPointFromVec2( struct vec2 pos );

Это делает его параллельным CGPointFromString().

...