C++ VOID函数通过引用传递数组,但使用时,我得到“没有匹配的函数用于调用…”
我编写了以下代码来填充已用随机浮点数初始化的长度为len的双数组: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
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)