2013-03-04 6 views
6

Ich entwickle eine iOS-Anwendung mit dem neuesten SDK.Array-Typ 'int [16]' ist nicht zuweisbar

Ich möchte diese auf einer .mm tun, Datei:

@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}; 
    } 

    ... 
} 

Aber ich erhalte den folgenden Fehler:

Array type 'int [16]' is not assignable 

Wie kann ich diesen Fehler beheben?

Antwort

6

Wenn Sie nur das Array initialisiert werden soll:

int _cars[16] = {0}; 

Es ist sicher die zusätzlichen Nullen fallen zu lassen, wird der Compiler sie herauszufinden. Es ist nicht möglich ganze Arrays in C zuzuweisen, deshalb beschwert sich der Compiler in Ihrem Fall. Es ist nur möglich, sie zu initialisieren, und die Zuweisung wird nur dann als Initialisierung betrachtet, wenn sie als Teil der Deklaration ausgeführt wird.

+0

Ich habe meine Frage mit besseren Details aktualisiert. – VansFannel

+0

Wenn das Array eine Instanzvariable ist, sollte es automatisch mit der Methode 'alloc' auf Null initialisiert werden (siehe [diese Frage] (http://stackoverflow.com/questions/990817/are-ints-always-initialized-to) -0)). Schauen Sie sich den Array-Inhalt an, um sicherzugehen. – zoul

8

Objective-C++ unterscheidet sich in diesem Fall nicht von C, Objective-C oder C++. Sie müssen ein Array initialisieren, wenn Sie es erklären:

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

Arrays sind nicht übertragbar lvalues.

+0

Aber ich kann das nicht auf @interface tun. – VansFannel

+0

Sie müssen nicht, wenn es eine Instanzvariable ist. Es wird standardmäßig Null initialisiert. –

Verwandte Themen