10

最新のSDKを使用してiOSアプリケーションを開発しています。

.mmこれをファイルで実行したい:

@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

このエラーを修正するにはどうすればよいですか?

4

2 に答える 2

10

配列を初期化するだけの場合:

int _cars[16] = {0};

余分なゼロを削除しても安全です。コンパイラがそれらを見つけ出します。Cで配列全体を割り当てることはできません。そのため、コンパイラはあなたの場合に不平を言います。それらを初期化することだけが可能であり、割り当ては宣言の一部として行われた場合にのみ初期化と見なされます。

于 2013-03-04T18:04:59.710 に答える
8

この場合、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};

配列は割り当て可能な左辺値ではありません。

于 2013-03-04T18:05:23.520 に答える