Тип массива 'int [16]' не присваивается

Я разрабатываю приложение iOS с последним SDK.

Я хочу сделать это на :

@interface MyClass ()
{
   int _cars[16];

   ...
}

@end

@implementation MyClass

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

    if (self)
    {
        _cars = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    }

    ...
}

но я получаю следующую ошибку:

Array type 'int [16]' is not assignable

как я могу исправить эту ошибку?

2 ответов


Если вы просто хотите инициализировать массив:

int _cars[16] = {0};

безопасно отбросить лишние нули, компилятор их вычислит. Невозможно назначить целые массивы в C, поэтому компилятор жалуется в вашем случае. Инициализировать их можно только, и назначение считается инициализацией только тогда, когда это сделано как часть объявления.


Objective-C++ в этом случае ничем не отличается от C, Objective-C или c++. Вы должны инициализировать массив при объявлении его:

int _cars[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

массивы не являются назначаемыми lvalues.