C++ VOID函数通过引用传递数组,但使用时,我得到“没有匹配的函数用于调用…”

C++ VOID函数通过引用传递数组,但使用时,我得到“没有匹配的函数用于调用…”,c++,arrays,pass-by-reference,void,C++,Arrays,Pass By Reference,Void,我编写了以下代码来填充已用随机浮点数初始化的长度为len的双数组: void FillRay(double (&array)[] , const unsigned int len, const double a , const double b) { for(unsigned int i = 0 ; i < len ; ++i ) { array[i] = randFloat(a,b); // Fill array at i with random nu

我编写了以下代码来填充已用随机浮点数初始化的长度为len的双数组:

void FillRay(double (&array)[] , const unsigned int len, const double a , const double b)
{
    for(unsigned int i = 0 ; i < len ; ++i )
    {
    array[i] = randFloat(a,b);   // Fill array at i with random number
    }

return;
}
。。。我得到一个错误,调用'FillRay'时没有匹配的函数


有人能解释一下我做错了什么吗??谢谢

将您的功能原型更改为以下内容:

void FillRay(double* array, const unsigned int len, const double a , const double b)
此外,对于数组大小使用size\u t而不是int也是一种很好的做法

double&array[]是一种通过引用获取数组而不指定数组大小的尝试。这是不可能的。同时指定len参数这一事实在技术上是不相关的。如果您想使用标准C++而不使用任何专有扩展,那么您有三种选择:

完全更改程序逻辑,使数组大小在编译时固定。 让函数取一个double*并让从数组到指针的自动转换非正式地称为decay。 使用std::vector。
可变长度数组不是标准C++,但编译器可以支持它作为扩展。使用将自担风险。您在哪里定义FillRay函数?
void FillRay(double* array, const unsigned int len, const double a , const double b)
void FillRay(double (&array)[] , const unsigned int len, const double a , const double b)