我想创建一个返回C风格多维数组的函数
int mArray[2][2];
int[][] mArray getArray();
所以这不起作用,我也不知道为什么。任何帮助将不胜感激。
答案 0 :(得分:5)
来自[dcl.funct]:
函数不应具有类型数组或函数的返回类型,尽管它们可能具有类型指针的返回类型或对此类事物的引用。虽然可以有函数指针数组,但是不应该有函数数组。
但是,您可以返回std::array
代替:
std::array<std::array<int, 2>, 2> getArray();
答案 1 :(得分:2)
您不能按值返回数组,因为它们不会隐式复制(因为标准会这样说)。您应该使用std::array
代替:
std::array<std::array<int,2>,2> fun();
std::array<std::array<int,2>,2> arr = fun();
现在使用C阵列的原因并不多于std::array
,其中最常见的可能是#34;因为我的老师/教授/老板这么说&#34;。