我有一个班级的项目,该项目基本上从输入文件中读取3个学生的信息(每个学生有3个课程和5个测试以及他们的姓名,ssn,电话号码等信息),并存储输入以数组形式排列,然后将信息输出到输出文件中。该项目必须分为6个功能,不包括主要功能。
我可以成功读取和存储信息,但是当我转到“ validateData”函数时,我的数组未传递给该函数,因此它将无法对其进行验证。在其他所有功能中也会发生此错误。我认为这可能是函数原型的错误,因为这是我对此最困惑的地方。
我尝试将原型参数更改为(string [],int [],double []),因为我有3个不同的数组,一个数组用于字符串,一个数组用于int,另一个数组用于double。但这没有用。除了没有这些“ []”,我还尝试了相同的操作,但仍然无法正常工作,我认为错误是表示编译器无法将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.
}
我期望将数组传递到函数中,但是它没有这样做,并给我一个错误,指出“错误:函数的参数太少'void validateData(std :: __ cxx11 :: string *,int *,double *)'“我不知道错误消息试图说什么。
答案 0 :(得分:0)
原型功能很好,但是功能标题行不匹配。
您的原型:
//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
...等替换为具有各自类型的实际变量。
编辑:
如果您想在validateData
内部调用inputData
方法,则必须执行以下操作:
void inputeData(....) {
validateData(some_array, some_int, some_double);
}