Пожалуйста, смотрите комментарий:
static void drawAnObject() {
Form *form = [[Form alloc] init];
int i;
[form randomizeCube];
glColor3f(0.0, 0.0, 0.0);
for(i = 0; i < MAX_CUBE; i++) {
glutWireCube(form->cube[i]->size);
//compiler issues hard warning because form->cube is protected!!
}
}
Я бы предпочел использовать метод доступа, который я поместил в класс "Форма", чтобы я мог написать что-то вроде:
glutWireCube([[form cube][i] size]);
Но я получаюошибка «невозможно преобразовать в тип указателя», когда я пытаюсь скомпилировать это.
Это мой метод доступа в классе «Форма»:
@implementation Form
- (Cube *) cube {
return *cube;
}
Определена переменная «куб»в заголовочном файле класса "Form" следующим образом:
@interface Form : NSObject <NSCopying> {
Cube *cube[MAX_CUBE];
}
Ниже перечислены переменные класса "Cube", определенные в его заголовочном файле:
@interface Cube : NSObject <NSCopying> {
double size;
double positionX;
double positionY;
double positionZ;
}
...и соответствующие средства доступа в файле реализации (.m):
- (double) size {
return size;
}
- (void) setSize: (double) newSize {
size = newSize;
}
- (double) positionX {
return positionX;
}
- (void) setPositionX: (double) newPositionX {
positionX = newPositionX;
}
- (double) positionY {
return positionY;
}
- (void) setPositionY: (double) newPositionY {
positionY = newPositionY;
}
- (double) positionZ {
return positionZ;
}
- (void) setPositionZ: (double) newPositionZ {
positionZ = newPositionZ;
}
Я бы хотел избежать использования NSMutableArray или NSArray, так как позже я планирую перенести эту часть кода проекта на платформы, не относящиеся к Cocoa..
Последние пару часов я потратил на поиски правильного способа сделать это.Есть ли «правильный способ» сделать это, используя массивы в стиле C и методы доступа Objective-C?