C++ 从函数返回静态固定大小数组
是否可以从函数返回静态固定大小数组?这个的语法是什么。我不是要C++ 从函数返回静态固定大小数组,c++,arrays,C++,Arrays,是否可以从函数返回静态固定大小数组?这个的语法是什么。我不是要std::array,也不是要T*,我是特别要T arr[N]形式的数组。例如,可以通过以下语法将此类数组作为函数中的参数: template<typename T, auto N> void func(T (&arr)[N]) { } 模板 无效函数(T&arr)[N]) { } 函数不能按值返回数组。您已经注意到,函数可以通过引用将数组作为参数;类似地,函数可以通过引用返回数组。为此,最简单的方法是使用尾部
std::array
,也不是要T*
,我是特别要T arr[N]
形式的数组。例如,可以通过以下语法将此类数组作为函数中的参数:
template<typename T, auto N>
void func(T (&arr)[N])
{
}
模板
无效函数(T&arr)[N])
{
}
函数不能按值返回数组。您已经注意到,函数可以通过引用将数组作为参数;类似地,函数可以通过引用返回数组。为此,最简单的方法是使用尾部返回类型语法:
auto func() -> T (&)[N];
但是数组既不能按值传递也不能按值返回。函数不能按值返回数组。您已经注意到,函数可以通过引用将数组作为参数;类似地,函数可以通过引用返回数组。为此,最简单的方法是使用尾部返回类型语法:
auto func() -> T (&)[N];
但是数组既不能通过值传递,也不能通过值返回。不能完全确定您要问什么,但是如果数组在函数中的作用域内,如在
void func(){T arr[N];}
中,它在函数的末尾是死的。@user4581301我想将其视为一个对象并返回一个副本(可能带有副本省略)。这不可行吗?如果返回数组,它将衰减为指针并过期。得到一个数组的唯一方法是将它包装在一个类中,如果你要这样做,ta dah,可怜的人的std::array
。不完全确定你在问什么,但数组是否在函数中,如void func(){T arr[N];}
,范围内,它在函数的末尾是死的。@user4581301我想把它当作一个对象来处理,并返回一个副本(可能带有副本省略)。这不可行吗?如果返回数组,它将衰减为指针并过期。几乎唯一的方法就是把它包装在一个类中,如果你要这样做,塔达,可怜的男人的std::array
。这充分回答了我的问题。为什么T(&)[N]
不能直接位于返回类型的位置,而auto是必需的(我试过了,它不起作用)?@lightxbulb可以这样做,但大多数人的语法都错了。这充分回答了我的问题。为什么T(&)[N]
不能直接位于返回类型的位置,而auto是必需的(我试过了,它不起作用)?@lightxbulb可以这样做,但大多数人的语法都错了。