iphonesdk2dint数组
我试图在objective-c中创建一个2d数组,但我并不想使用iphonesdk2dint数组,iphone,c++,objective-c,arrays,multidimensional-array,Iphone,C++,Objective C,Arrays,Multidimensional Array,我试图在objective-c中创建一个2d数组,但我并不想使用NSArray,因为我使用的是int,代码会很烦人:{[array objectAtIndex:x]objectAtIndex:y],更不用说我必须将NSNumber中的数字转换回来……看起来需要做很多额外的工作 我不能做以下事情吗 // .h file int aTiles[10][2]; // .m file aTiles = { { 0, 0}, // 0 { 0, 1}, // 1
NSArray
,因为我使用的是int,代码会很烦人:{[array objectAtIndex:x]objectAtIndex:y]
,更不用说我必须将NSNumber
中的数字转换回来……看起来需要做很多额外的工作
我不能做以下事情吗
// .h file
int aTiles[10][2];
// .m file
aTiles = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
它在同一行中一起工作(inta[x][x]={…};
),但是我需要数组是公共的,这样我就可以从任何函数访问它
第二行是分号
谢谢看起来你在//5附近多了一个逗号 您需要为aTiles声明类型吗
int aTiles = ...
因为这也被标记为C++,所以可以使用IVAR:
std::vector<std::vector<int> > tiles;
std::向量块;
然后在对象的初始值设定项中调整大小并设置初始元素值
否则,这是全局还是ivar?它应该是常量还是可变的?当我尝试您的原始代码时,出现了一些不同的错误,但这很有效:
// .h file
extern int aTiles[10][2];
// .m file
int aTiles[10][2] = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
这种令人敬畏的感觉怎么样…(不太好)
/.h
国际标准[10][2];
//m
INTA[10][2]={
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
对于(允许存在的int r=0;r。Jon Skeet在这里给出了一个很好的解释:Jon Skeet-这是您能做的最好的吗?;-)当您使用extern时,它确实有效,但当您尝试使用数组时,您会得到错误:架构i386的未定义符号:“_aTiles”,参考:[LevelMaster loadLevel]在LevelMaster.o中,注意loadLevel是我尝试使用NSLog(@“test%i”,aTiles[3][0])的函数;*当您在另一个函数中使用该数组时,您会发现该错误,您可以在Objective-C或Objective-C++(.m或.mm)中的LevelMaster中定义的函数中使用该数组?aTiles的extern和声明如何?Obj-C或Obj-C++?它们是objective-C,默认为xcode,但您可以使用C/C++方法,即int array[x][x]我想移动聊天,但不能因果报应-你上面的例子是什么?我根据他们的错误,假设他们在水平上以外的东西。H/LealMealth.M。MH不知道这是什么LOL。我不认为XCODEL可以使用它。它支持C++,但不是那么的。UHHH……这是C++中典型的2D数组。XCODER、GCC和CLAN都知道这是什么。如果他们不能支持,他们就不能说他们有现代C++支持:
// .h
int aTiles[10][2];
// .m
int a[10][2] = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
for (int r = 0; r <= 5; r++) {
for (int c = 0; c < 2; c++) {
aTiles[r][c] = a[r][c];
}
}