您究竟如何通过函数的参数传递数组?
How exactly do you pass arrays through the parameters of a function?
我的 class 有一个项目,基本上读取 3 个学生的信息(每个学生有 3 门课程和 5 个测试,以及他们的姓名、ssn、phone 号码等信息.) 来自输入文件,将输入存储在数组中,然后将信息输出到输出文件中。项目必须拆分成6个功能,不包括主功能。
我可以成功读取和存储信息,但是当我转到 "validateData" 函数时,我的数组没有传递给该函数,所以它无法验证它。此错误也发生在其他功能中。我相信这可能是函数原型的错误,因为这是我最困惑的地方。
我已经尝试将原型参数更改为 (string[],int[],double[]) 因为我有 3 个不同的数组,一个用于字符串,一个用于整数,一个用于双精度数。但这没有奏效。我也尝试了同样的事情,除了没有这些“[]”,仍然没有工作,我相信错误说编译器无法将 double* 更改为 double,反之亦然。
//Declaring global constants
const int STUDENTS = 3;
const int NONNUMERIC_INFO = 9;
const int NUMERIC_INFO = 2;
const int COURSES = 3;
const int TESTS_and_CNG = 6;
//Above main function, Function prototype
void validateData(string [], int [], double []);
//Inside main function, Function call
validateData();
//Declaring Arrays (inside of a different function called inputData)
string nonNumeric1[STUDENTS][NONNUMERIC_INFO];
int numeric1[STUDENTS][NUMERIC_INFO];
double numeric2[STUDENTS][COURSES][TESTS_and_CNG];
//Under main function, Function definition
void validateData(string, int, double)
{
//A bunch of if statements that i will soon turn into for loops, but will save you guys the trouble of reading them all, as its not important to the question.
}
我希望将数组传递到函数中,但它没有这样做,并给我一个错误提示 "error: too few arguments to function 'void validateData(std::__cxx11::string*, int*, double*)'" 我不知道错误消息的意思。
原型函数做得很好,但您的函数标题行不匹配。
你的原型:
//Above main function, Function prototype
void validateData(string [], int [], double []);
你的函数:
void validateData(string, int, double)
其次,虽然您的原型可能不需要变量名,但您的函数标题行肯定需要。
void validateData(string, int, double)
你这里的函数只有变量类型。如果您不完全熟悉声明函数,我会查看像 declaring functions 这样的教程。
最后,一旦您匹配了原型函数标题行和实际函数标题行并给出了实际函数参数变量名,您就需要修复函数调用。
您这样调用您的函数:validateData();
这又与您的函数标题行不匹配。您的函数标题行表示 validateData
接受 string array
、int
和 double
。您的函数调用不传递任何内容 ()
。如果您希望 array
、int
和 double
出现在函数中,您需要在函数调用中传递它们。 validateData(some_array, some_int, some_double)
。
不要忘记将 some_array
、some_int
... 等替换为具有各自类型的实际变量。
编辑:
如果您希望在 inputData
中调用 validateData
方法,您必须执行如下操作:
void inputeData(....) {
validateData(some_array, some_int, some_double);
}
我的 class 有一个项目,基本上读取 3 个学生的信息(每个学生有 3 门课程和 5 个测试,以及他们的姓名、ssn、phone 号码等信息.) 来自输入文件,将输入存储在数组中,然后将信息输出到输出文件中。项目必须拆分成6个功能,不包括主功能。
我可以成功读取和存储信息,但是当我转到 "validateData" 函数时,我的数组没有传递给该函数,所以它无法验证它。此错误也发生在其他功能中。我相信这可能是函数原型的错误,因为这是我最困惑的地方。
我已经尝试将原型参数更改为 (string[],int[],double[]) 因为我有 3 个不同的数组,一个用于字符串,一个用于整数,一个用于双精度数。但这没有奏效。我也尝试了同样的事情,除了没有这些“[]”,仍然没有工作,我相信错误说编译器无法将 double* 更改为 double,反之亦然。
//Declaring global constants
const int STUDENTS = 3;
const int NONNUMERIC_INFO = 9;
const int NUMERIC_INFO = 2;
const int COURSES = 3;
const int TESTS_and_CNG = 6;
//Above main function, Function prototype
void validateData(string [], int [], double []);
//Inside main function, Function call
validateData();
//Declaring Arrays (inside of a different function called inputData)
string nonNumeric1[STUDENTS][NONNUMERIC_INFO];
int numeric1[STUDENTS][NUMERIC_INFO];
double numeric2[STUDENTS][COURSES][TESTS_and_CNG];
//Under main function, Function definition
void validateData(string, int, double)
{
//A bunch of if statements that i will soon turn into for loops, but will save you guys the trouble of reading them all, as its not important to the question.
}
我希望将数组传递到函数中,但它没有这样做,并给我一个错误提示 "error: too few arguments to function 'void validateData(std::__cxx11::string*, int*, double*)'" 我不知道错误消息的意思。
原型函数做得很好,但您的函数标题行不匹配。
你的原型:
//Above main function, Function prototype
void validateData(string [], int [], double []);
你的函数:
void validateData(string, int, double)
其次,虽然您的原型可能不需要变量名,但您的函数标题行肯定需要。
void validateData(string, int, double)
你这里的函数只有变量类型。如果您不完全熟悉声明函数,我会查看像 declaring functions 这样的教程。
最后,一旦您匹配了原型函数标题行和实际函数标题行并给出了实际函数参数变量名,您就需要修复函数调用。
您这样调用您的函数:validateData();
这又与您的函数标题行不匹配。您的函数标题行表示 validateData
接受 string array
、int
和 double
。您的函数调用不传递任何内容 ()
。如果您希望 array
、int
和 double
出现在函数中,您需要在函数调用中传递它们。 validateData(some_array, some_int, some_double)
。
不要忘记将 some_array
、some_int
... 等替换为具有各自类型的实际变量。
编辑:
如果您希望在 inputData
中调用 validateData
方法,您必须执行如下操作:
void inputeData(....) {
validateData(some_array, some_int, some_double);
}