按条件返回数组引用:
StructOne * (arrS)[9][10] = bIs ? arr1: arr2;
这是一句合法C++代码,在安卓NDK和XCODE下都编译运行正常,但是VS2005里编译错误:
: error C2440: “初始化”: 无法从“StructOne *(*)[10]”转换为“StructOne *[9][10]”
没有转换为数组类型,但有转换为数组的引用或指针
最后只能改成这样:
StructOne* (&GetArr(bool bIs1st,
StructOne * (&arr1st)[9][10],
StructOne * (&arr2nd)[9][10]))[9][10]
{
if( bIs1st )
return arr1st;
else
return arr2nd;
}
StructOne * (&S)[9][10] = GetArr( bIs1st , arr1 , arr2 ) ;