所以我有这个由三个NSPoint结构组成的结构。
typedef struct AOTriangle_ {
NSPoint a;
NSPoint b;
NSPoint c;
} AOTriangle;
在某些情况下,我希望将这些点作为a,b,c和其他情况作为索引引用到数组中。
像这样,
AOTriangle t;
t.a = NSMakePoint(0,0);
t.b = NSMakePoint(3,0);
t.c = NSMakePoint(0,4);
for(int i = 0; i < 3; ++i) {
t[i].x += 5.0;
t[i].y += 5.0;
}
这是我得到的最接近的,但你可以看到它并不是我想要的。 有没有办法在Objective-C中这样做?这是一种比我在下面做的更好的方式 - 也许是一个工会?
typedef struct AOTriangle_ {
NSPoint a;
NSPoint b;
NSPoint c;
} AOTriangle;
AOTriangle t;
t.a = NSMakePoint(0,0);
t.b = NSMakePoint(3,0);
t.c = NSMakePoint(0,4);
NSPoint* t = (NSPoint*)▵
for(int i = 0; i < 3; ++i) {
t[i].x += 5.0;
t[i].y += 5.0;
}
答案 0 :(得分:3)
是的,您可以使用“union”。我相信声明会是这样的:
typedef struct AOTriangle_ {
union {
struct {
NSPoint a;
NSPoint b;
NSPoint c;
};
NSPoint points[3];
};
} AOTriangle;
union
基本上是一种说法“我可以将此结构的成员称为a
,b
或c
,或{{{ 1}},points[0]
或points[1]
。“
你会像这样使用它:
points[2]