error C2440: “初始化”: 无法从“StructOne *(*)[10]”转换为“StructOne *[9][10]”

按条件返回数组引用:


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 ) ;


你可能感兴趣的:(error C2440: “初始化”: 无法从“StructOne *(*)[10]”转换为“StructOne *[9][10]”)