将结构传递给类方法

发布于 2024-10-31 20:21:37 字数 852 浏览 1 评论 0原文

我希望能够做到这一点:

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'

I wanted to be able to do this:

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

Using my structure:

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

But I get these errors (in Coord.h, on the positionFrom lines):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

往昔成烟 2024-11-07 20:21:37

这应该是:

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

或者你无法导入定义vec2的头文件。

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

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

CGPoint CGPointFromVec2( struct vec2 pos );

这使得它与 CGPointFromString() 并行。

This should be:

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

Or else you have failed to import the header file that defines vec2.

You also have a trailing ] in the return statement of positionFrom:.

BTW, just stylistically, this kind of thing is usually done with a function rather than a class method. Something like this:

CGPoint CGPointFromVec2( struct vec2 pos );

That makes it parallel to CGPointFromString().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文