我有两个for循环,用于处理文件中的数据并将其存储到数组中,以方便地对每个元素进行适当的索引。我想将此数组传递给函数并对其执行一些计算,但它给我一个错误:“错误:没有匹配的函数 调用“ year_range””。
我试图将其作为item [] []传递,但是编译器希望我指定索引。我想将整个数组传递给函数,以便可以对其执行一些计算。
void year_range(string item[]);
int main()
{
string item[75][5];
for (int row = 0; row < 74; row++)
{
for (int col = 0; col < 4; col++)
{
getline(fin,item[row][col], ',');
}
getline(fin, item[row][4], '\n');
}
year_range(item);
}
void year_range(string item[])
{
// processing item array
}
我希望整个“ item”数组都能成功通过year_range函数,并且没有错误。
答案 0 :(得分:3)
它需要第二维的长度。试试:
void year_range(string item[][5]);
请注意,这仅适用于第二维为5的数组。有关更好的,更通用的方法,请参见此documentation。
还请注意:即使我没有在实现中进行更改,也必须在实现和声明中都进行更改。
答案 1 :(得分:1)
void year_range(string item[]);
此处,参数的类型为“字符串指针”。
string item[75][5]; year_range(item);
将数组用作值时,它将隐式转换为指向第一个元素的指针。这称为衰减。 item
是由5个字符串组成的(75)数组。由于元素是5个字符串的数组,所以指向元素的指针就是5个字符串的数组的指针。
因此,您正在将指向5个字符串的数组的指针传递给接受指向字符串的指针的函数。由5个字符串组成的数组是与字符串不同的类型,因此无法使用。您可以更改year_range
以接受指向5个字符串的指针,该指针与您尝试传递的(已衰减)对象匹配:
void year_range(string item[][5]); // like this
void year_range(string (*item)[5]); // or this