В настоящее время я изучаю C++ и имею программу с этим кодом, который работает нормально. Я скопировал этот код из моей первой программы в свою вторую, но я не могу понять, что вызывает ошибку. Ошибка: "Ошибка: тип аргумента StudentResults
несовместим с типом параметра StudentResults
Код выглядит следующим образом: я знаю, что некоторые из них цитируются, это просто остановить некоторые вещи от работы, пока я не получаю эту ошибку отсортированной. Это всего лишь образец кода, который, по моему мнению, ошибочен, если требуется больше кода, я добавлю остальные. Ошибка там, где ** **, на самом деле это не код, чтобы выделить, где ошибка. благодаря
//Prototypes - common
void press_key(HANDLE hdl, int col, int row);
void message(HANDLE hdl, char mess[], int col, int row);
char again(HANDLE hdl, int col, int row);
void set_menu(HANDLE hdl );
int get_option(HANDLE hdl, int c , int r , int min , int max);
void gotoXY( HANDLE hdl, SHORT x, SHORT y );
void clrScr(HANDLE hdl );
void getscreen(HANDLE hdl, char name[]);
void validateString(HANDLE hdl, int col, int row, int min, int max,char str[], char errMessage[]);
int validateNumber(HANDLE hdl, int col, int row, int min, int max, char errMessage[]);
//prototypes - menu
int populateStock( struct StudentDetails student_details[]);
void reportResults(HANDLE hdl, struct StudentDetails student_details[], int size);
void displayBySurname(HANDLE hdl,struct StudentDetails student_details[], int size);
void displayByStudentNumber(HANDLE hdl, struct StudentDetails student_details[30], int size);
void updateStock(HANDLE hdl, struct StudentDetails student_details[], int size );
void addStock(HANDLE hdl, struct StudentDetails student_details[], int & size);
struct StudentResults
{
int candidateNo;
char forename[20], surname[20];
int section[5];
};
int _tmain(int argc, _TCHAR* argv[])
{
// insert HANDLE hdl
HANDLE hdl = GetStdHandle( STD_OUTPUT_HANDLE );
//Data Declaration
int option, size;
struct StudentResults student_details[30] ;
// fill array with some stock details
size = populateStock(student_details); // error here
do
{
set_menu(hdl);
option=get_option(hdl, 44,20,1,7);
switch(option)
{
case 1:; //reportStock(hdl, student_details, size);
case 2:; //displayStockByCat(hdl, student_details, size);
case 3:; //searchStock(hdl, stock_details, size);
case 4:; //searchStockByDesc(hdl, stock_details, size);
case 5:; //updateStock(hdl, stock_details,size);
case 6:; //addStock(hdl, stock_details,size);
}
} while (option !=7);
return 0;
}
int populateStock( struct StudentResults student_details[])
{
int size;
student_details[0].candidateNo = 1004;
strcpy_s(student_details[0].forename , "Joe");
strcpy_s(student_details[0].surname , "Bloggs");
student_details[0].section[0] = 20.87;
student_details[0].section[1] = 20.87;
student_details[0].section[2] = 20.87;
student_details[0].section[3] = 20.87;
student_details[0].section[4] = 20.87;
return 1;
}
Это означает, что то, что передается как параметр populateStock
, не является типом требуемого параметра. Требуется другой тип параметра. Поскольку вы не отправляли код функции populateStock
я не могу точно указать вас, но это лучшее, что я могу вам рассказать.
Из вашей функции populateStock
определение:
int populateStock( struct StudentDetails student_details[]);
populateStock
принимает struct StudentDetails
как тип аргумента, но ваш передавая ему объект типа struct StudentResults
, который является несовместимым типом.
struct StudentResults student_details[30] ;
// fill array with some stock details
/*This will generate an error as your passing an incompatible type */
size = populateStock(student_details);