【发布时间】:2014-04-17 22:21:30
【问题描述】:
我正在尝试编写一个程序来检查矩形的尺寸是否大于零。在 void 函数检查中,我尝试使用数组来检查值并使用字符串向用户显示错误的维度。我收到一个错误,它“无法将参数 1 从 'double[6]' 转换为 'double'。
#include <iostream>
#include <string>
using namespace std;
void Check(double, string);
int main()
{
const int size = 3;
double DimArray[size];
string MyArray[size] = { "Height", "Length", "Width"};
cout << "Enter the height, length and width of rectangle: ";
cin >> DimArray[0] >> DimArray[1] >> DimArray[2];
Check(DimArray, MyArray);
return 0;
}
void Check(double arr1[], string arr2[])
{
int i;
for (i = 0; i < 4; i++)
{
if (arr1[i] <= 0)
cout << "Your entered " << arr2[i] << "is less than zero!";
cout << "Please enter a valid number --> ";
cin >> arr1[i];
}
}
【问题讨论】:
-
您正在传递包含 3 个元素的数组,但
Check函数正在迭代 4 个元素。访问数组边界之外的元素会产生undefined behavior。我建议使用std::array或std::vector或将数组的大小传递给Check。
标签: c++ arrays string function