C ++ Struct в массиве, помогите! - PullRequest
       22

C ++ Struct в массиве, помогите!

0 голосов
/ 08 октября 2010

У меня есть приложение для 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 ]

2 голосов
/ 08 октября 2010

Поскольку вы уже typedef отредактировали его в Particle.h, удалите слово struct из строки объявления массива (строки, в которой находится ошибка).

ОДНАКО

  • В C ++ вам не нужно typedef это, просто напишите struct Particle { /* members */ };

  • Почему вы объявляете массив без длины? Попробуйте использовать std::vector ( tutorial ), который представляет собой динамически изменяемый размер массива (вам не нужно беспокоиться о длине). Это просто как: std::vector< Particle > particles;

1 голос
/ 08 октября 2010

Во-первых, в c ++ вам не нужно вводить определения своих структур.Вам не нужно использовать ключевое слово struct для объявления переменной с некоторым типом структуры:

 ParticleStruct *particles;

Используйте указатель (как указано выше) для вашей переменной.Тогда вы можете динамически выделить память для него.Или, что еще лучше, используйте vector :

vector<ParticleStruct> particles;

Кажется, вам необходимо ознакомиться с c ++.Вы можете прочитать книгу или две .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...