我有一个iPhone应用程序曾经使用数千个小对象的数组作为其数据源。现在,我试图让它使用C ++ Structs来提高性能。我编写了结构,并将其放在“Particle.h”中:
typedef struct{
double changeX;
double changeY;
double x;
double y;
}ParticleStruct;
然后,我导入了“Particle.h”,并试图定义数组:
#import "Particle.h"
@implementation ParticleDisplay
struct ParticleStruct particles[];
///Size will be determined later, this declaration is to make
////the declaration visible to the entire class...
然而,在这一行,我得到错误:“数组类型具有不完整的元素类型”。 据我所知,其他所有内容都很好,我确信在声明之前已经导入了“Particle.h”。 有什么想法吗?
答案 0 :(得分:2)
由于您已经在Particle.h中typedef
编辑了它,因此请从数组声明行(错误所在的行)中删除单词struct
。
然而,
在C ++中,您不需要typedef
,只需撰写struct Particle { /* members */ };
为什么要声明没有长度的数组?考虑使用std::vector
(tutorial)这是一个动态可重新调整大小的数组(您无需担心长度)。它很简单:std::vector< Particle > particles;
答案 1 :(得分:1)
首先,在c ++中,你不需要输入你的结构。您不需要使用struct关键字来声明具有某种结构类型的变量:
ParticleStruct *particles;
为变量使用指针(如上所示)。然后,您可以为它动态分配内存。或者更好的是,使用vector:
vector<ParticleStruct> particles;
您似乎需要熟悉c ++。考虑阅读a book or two。