C ++ Struct in array,求助!

时间:2010-10-08 01:05:29

标签: c++ iphone objective-c arrays struct

我有一个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”。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

由于您已经在Particle.h中typedef编辑了它,因此请从数组声明行(错误所在的行)中删除单词struct

然而,

  • 在C ++中,您不需要typedef,只需撰写struct Particle { /* members */ };

  • 为什么要声明没有长度的数组?考虑使用std::vectortutorial)这是一个动态可重新调整大小的数组(您无需担心长度)。它很简单:std::vector< Particle > particles;

答案 1 :(得分:1)

首先,在c ++中,你不需要输入你的结构。您不需要使用struct关键字来声明具有某种结构类型的变量:

 ParticleStruct *particles;

为变量使用指针(如上所示)。然后,您可以为它动态分配内存。或者更好的是,使用vector

vector<ParticleStruct> particles;

您似乎需要熟悉c ++。考虑阅读a book or two