我想在Objective-C中实现这样的东西
+(int[10][10])returnArray
{
int array[10][10];
return array;
}但是,这会给出一个“数组初始化器必须是初始化器列表”的编译器错误。这有可能吗?
发布于 2012-01-07 08:51:46
您不能在C或Objective-C中返回(任何维数的)数组。由于数组不是左值,您不能将返回值赋给变量,因此这种事情的发生是没有意义的。但是,您可以解决这个问题。你需要返回一个指针,或者使用一些技巧,比如将数组放入结构中:
// return a pointer
+(int (*)[10][10])returnArray
{
int (*array)[10][10] = malloc(10 * 10 * sizeof(int));
return array;
}
// return a structure
struct array {
int array[10][10];
};
+(struct array)returnArray
{
struct array array;
return array;
}发布于 2012-11-20 09:03:47
使用objective C++的另一种方法是声明数组,如下所示:
@interface Hills : NSObject
{
@public
CGPoint hillVertices[kMaxHillVertices];
}这意味着该数组归Hills类实例所有-即当该类拥有数组时,它将消失。然后,您可以从另一个类访问,如下所示:
_hills->hillVertices 我更喜欢卡尔·诺鲁姆描述的技术,但我想把它作为一个在某些情况下可能有用的选项来呈现-例如,将数据从构建器类传递到OpenGL中。
https://stackoverflow.com/questions/8766377
复制相似问题