Не могу инициализировать C-массив в Objective-C - PullRequest
1 голос
/ 17 января 2010

мой файл YYY.h


 #define W 1 // i am
 #define B 2 // opponent
 #define F 3 // board margin
static int boardPos[12][12];
@interface YYY : NSObject 
{...}
-(id)init;
@end

и YYY.m


#import "YYY.h"


@implementation YYY

-(id)init
{   
    if (self = [super init]) {

        // initializing Empty Board

        boardPos[12][12] = {
            {F,F,F,F,F,F,F,F,F,F,F,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,0,0,0,0,0,0,0,0,0,0,F},
            {F,F,F,F,F,F,F,F,F,F,F,F}
        };
...

Я получил сообщение об ошибке «Ожидаемое выражение перед {token in» boardPos [12] [12] = {". Если я пишу что-то перед boardPos - это становится локальной переменной; поэтому я не могу правильно инициализировать этот C-массив. Мне нужно BoardPos должны быть видны в области видимости класса. Я пытался поместить его в объявление класса - та же ошибка.

Кстати, я уже переписал это на объектах NSArray, но все еще интересно, как работать с C-массивами.

Thx!

Ответы [ 2 ]

5 голосов
/ 17 января 2010

Я думаю, вы должны записать это в файл .m

static int boardPos[12][12] = {
        {F,F,F,F,F,F,F,F,F,F,F,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,0,0,0,0,0,0,0,0,0,0,F},
        {F,F,F,F,F,F,F,F,F,F,F,F}
    };

и удалить статический int boardPos [12] [12];в .h удалите boardPos [12] [12] = {...} в .m.

Это сделает BoardPos видимым только в этом файле .m.

3 голосов
/ 17 января 2010

инициализация массива должна выполняться как часть объявления, т. Е .:

in b[12] = {...};

это невозможно в динамическом назначении ...

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