我有找到max的功能,我想通过引用发送静态数组,为什么不可能?
template <class T>
T findMax(const T &arr, int size){...}
int main{
int arr[] = {1,2,3,4,5};
findMax(arr, 5); // I cannot send it this way, why?
return 0;
}
答案 0 :(得分:7)
使用正确的语法。将签名更改为:
template <class T, size_t size>
T findMax(const T (&arr)[size]){...}
或者您可以对std::array
函数使用findMax()
参数。
为什么这不可能?
const T &arr
:此处arr
是T
类型的引用,而不是您可能认为的类型T
数组的引用。因此,在[..]
之后您需要arr
。但是它会腐烂到一个指针。
您可以在此处使用()
更改绑定,并使用const T (&arr)[SIZE]
。
更多信息,您可以尝试探索const T &arr[N]
v / s const T (&arr)[N]
之间的区别。