1

我想做这个:

typedef struct
{
    CGPoint vertices[];
    NSUInteger vertexCount;
} Polygon;

但它说Field has incomplete type CGPoint []

4

3 回答 3

4

您需要做以下两件事之一:

  1. 将数组声明为固定大小(可能不是您想要的)
  2. 让它成为一个指针。但是随后您需要根据需要正确mallocfree数组。

更好的选择是不使用 astruct而是创建一个完整的类。然后,您可以添加方法和属性,并使内存管理更加容易。您正在使用 Objective-C。利用语言的面向对象方面。添加一个计算周长和面积等的方法。把逻辑放在它所属的地方。

于 2013-10-29T17:58:10.550 回答
0

设置数组大小CGPoint vertices[count];

于 2013-10-29T17:56:22.493 回答
0

无论如何,您不希望结构的每个元素都有一个唯一的名称吗?如果你只是想要一堆按数字顺序排列的 CGPoint,并且能够计算其中有多少,那么最好将它们放入 NSArray 或 NSMutableArray 中(当然存储为 NSValue)

结构的重点是通过描述性名称轻松访问值,即:

typedef struct {
    CGPoint helpfulAndDescriptiveNameOne;
    CGPoint helpfulAndDescriptiveNameTwoWhichIsDifferentThanTheOtherName;
    etc...
    NSUInteger vertexCount;
}

例如,一个 CGRect 只是一个由四个不同的 CGFloat 组成的结构,每个 CGFloat 都有描述性和有用的命名:

typedef {
    CGFloat x;
    CGFloat y;
    CGFloat width;
    CGFloat height;
} CGRect;
于 2013-10-29T18:02:09.703 回答