C++ 使用函数-Objective-C+创建数组+;

C++ 使用函数-Objective-C+创建数组+;,c++,objective-c,arrays,function,objective-c++,C++,Objective C,Arrays,Function,Objective C++,我想从一个函数创建一个数组。下面的方法显然是有效的,但是因为我的数组要大得多,所以我想节省写入它们的空间和时间 GLfloat gCubeTextureData_floorj[2] = { 1.0, 1.0 }; 在尝试从函数创建数组时,我遇到了一个错误,即“数组初始值设定项必须是初始值设定项列表”。但是,我通过返回列表来初始化数组。这是我的函数调用: GLfloat array[2] = [self createCubeTextureFromX1:0.5f toX2:1.0f toY1: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 };
}
这两个都不起作用。第一个给我函数中的错误,第二个给我函数调用中的错误。这可能吗?

为了在Objective-C中正确地执行此操作,我建议从您的方法返回一个NSArray


但是,glfloat不是可以存储在NSArray目录中的本机Objective-C对象。为了解决这个问题,我建议使用NSNumber或NSValue对象来包含GLfloat值。

不可能从函数、方法或任何东西初始化C数组。只能使用初始值设定项列表对其进行初始化。 ISO/IEC 9899:TC3,§6.7.8,16。 否则,具有聚合或联合类型的对象的初始值设定项应为元素或命名成员的括号内初始值设定项列表

您可以做什么:


使用指针代替C数组。堆在创建函数或方法中分配数组,并返回数组的指针。调用者负责释放它。

为什么不使用C99复合文字

- (float[2])fooX:(float)x andY:(float)y
{
    return (float[2]){ x, y };
}

那你用什么语言呢?您有三种语言taggedMy编译器设置为Objective-C++,因此我可以使用这三种语言中的任何一种。但是,我希望使用Objto-C(或Objul-C++),如您可以从我的函数名中看到的。但是我对C++的知识是很老的,我不知道细节,这仍然让“数组初始化器必须是一个初始化列表”。eror@michaellindahl初始化C数组时会执行此操作。@AMINEGM Awad平台、编译器、编译器标志等。?Mac OS–clang/LLVM–标准将retval分配给指针,而不是数组。这就是我在回答中想说的。使用NSArray和NSNumber的问题是,我需要使用glBufferData中的值,我不知道该怎么做。(OpenGL ES程序)无论在NSMutableArray中插入什么,都可以通过“
objectAtIndex:
”从另一端的(可变或不可变)NSArray中提取。一旦您熟悉了Objective-C阵列,它就会变得更容易。