如何在结构定义中定义CGPoints数组?

时间:2013-10-29 17:53:56

标签: ios objective-c arrays struct cgpoint

我想这样做:

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

但它说Field has incomplete type CGPoint []

3 个答案:

答案 0 :(得分:4)

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

  1. 将数组声明为固定大小(可能不是您想要的)
  2. 将它指向一个指针。但是,您需要根据需要正确地mallocfree数组。
  3. 更好的选择是不使用struct而是创建完整的类。然后,您可以添加方法和属性,以及使内存管理更容易。您正在使用Objective-C。利用该语言的面向对象方面。添加一种方法来计算周长和面积等。将逻辑放在它所属的位置。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您不希望结构的每个元素都有唯一的名称吗?如果你只是想要一个CGPoint的数字顺序,能够计算它们中的多少,你可以通过在NSArray或NSMutableArray(当然存储为NSValue)中推送它们来提供更好的服务

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

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

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

typedef {
    CGFloat x;
    CGFloat y;
    CGFloat width;
    CGFloat height;
} CGRect;