我想创建一个返回c风格多维数组的函数int mArray[2][2];
int[][] mArray getArray();
所以这不起作用,我不知道为什么。
From [dcl.funct]:
函数的返回类型不能是数组类型或函数类型,尽管它们的返回类型可以是指针类型或指向这类对象的引用类型。不能有函数数组,但可以有指向函数的指针数组。
但是,您可以返回一个std::array
:
std::array<std::array<int, 2>, 2> getArray();
不能按值返回数组,因为它们不会隐式复制(也因为标准是这样规定的)。你应该用std::array
代替:
std::array<std::array<int,2>,2> fun();
std::array<std::array<int,2>,2> arr = fun();
现在在std::array
上使用c数组的原因不多,最常见的原因可能是"因为我的老师/教授/老板这么说"。