0

関数から配列を作成したい。以下は明らかに機能しますが、配列がはるかに大きいため、スペースとそれらを書き出す時間を節約したいと考えています。

GLfloat gCubeTextureData_floorj[2] = { 1.0, 1.0 };

関数から配列を作成しようとすると、「配列初期化子は初期化子リストでなければなりません」というエラーが表示されます。ただし、リストを返すことで配列を初期化しています。これは私の関数呼び出しです:

 GLfloat array[2] = [self createCubeTextureFromX1:0.5f toX2:1.0f toY1:0.0f andY2:0.5f];

関数について次のことを試しました。

-(GLfloat[2]) createCubeTextureFromX1:(float)x1 toX2:(float)x2 toY1:(float)y1 andY2:(float)y2 {
    GLfloat gCubeTextureData_floorj[2] = { 1.0, 1.0 };
    return gCubeTextureData_floorj;
}

そして私は試しました

-(GLfloat[2]) createCubeTextureFromX1:(float)x1 toX2:(float)x2 toY1:(float)y1 andY2:(float)y2 {
    return { 1.0, 1.0 };
}

これらは両方とも機能しません。1つ目は関数内のエラーを示し、2つ目は関数呼び出しのエラーを示します。これは可能ですか?

4

3 に答える 3

1

C では、通常、配列はポインターを使用して返されます。

Objective-C でこれを適切に行うには、メソッドから NSArray を返すことをお勧めします。

ただし、GLFloats は、NSArray のディレクトリに格納できるネイティブの Objective-C オブジェクトではありません。これを回避するには、NSNumber または NSValue オブジェクトを使用して GLfloat 値を含めることをお勧めします。

于 2013-05-15T18:23:48.333 に答える