我正在研究这个项目,这是我第一次使用makefile。
我得到的错误是:
HW1.cpp:45:55: error: could not convert ‘Student1’ from ‘main()::Student’ to ‘Student’
主档案:
#include "header.h"
#include "function.h"
main()
{
int input = 0;
bool loop = 1;
#include "list.cpp"
ResetArray(arrayCou, arrayStu);
while (loop)
{
cout << "cmd> ";
cin >> input;
switch (input)
{
case 1:
AddCourse(&Course1, arrayCou);
break;
case 2:
AddStudent(&Student1, arrayStu);
break;
case 3:
AddStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 4:
AddGrade(&Student1, &Course1, arrayStu, arrayCou);
break;
case 5:
PrintCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 6:
PrintStudent(&Student1, &Course1, arrayStu, arrayCou);
break;
case 7:
PrintStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 8:
AvgStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 9:
loop = 0;
break;
default:
break;
}
}
}
功能声明:
#include "header.h"
void ResetArray(Course arrayCou[][101][5], Student arrayStu[][3]);
void AddCourse(Course Course1, Course arrayCou[][101][5]);
void AddStudent(Student Student1, Student arrayStu[][3]);
void AddStuCourse(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
void AddGrade(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
void PrintCourse(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
void PrintStudent(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
void PrintStuCourse(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
void AvgStuCourse(Student Student1, Course Course1, Student arrayStu[][3], Course arrayCou[][101][5]);
标题文件:
#include <iostream>
#include <string.h>
#include <cstring>
#include <iomanip>
using namespace std;
const int MAXSIZE = 101;
struct Student
{
string ID;
string name;
string majors;
};
struct Course
{
string ID;
string title;
string department;
double grade;
};
Student arrayStu[101][3];
Course arrayCou[101][101][5];
Course Course1;
Student Student1;
函数定义很长,所以我不想包含所有这些,但有没有办法修复makefile?它在主函数中每次使用Student1或Course1时都会出现相同的错误。
答案 0 :(得分:0)
main()::Student
表示您的Student
结构在main
内声明。函数内部的struct
声明非常常见,在您的情况下,这是一个错误。它是由
#include "list.cpp"
在main
函数中。
您应该在函数外声明struct
。为此,请在#include
之前移动main
指令:
#include "function.h"
#include "list.cpp"
...
int main()
{
...
}
答案 1 :(得分:-1)
所有函数必须在c / c ++中有返回类型(如果没有返回则应该为void),并且main函数必须返回一个整数,以便OS可以读取返回的数字并确定程序是否成功执行或不。 (如果在主函数OS中返回非0数字,则认为程序没有正常执行)
所以代码应该如下
#include "header.h"
#include "function.h"
int main()
{
int input = 0;
bool loop = 1;
#include "list.cpp"
ResetArray(arrayCou, arrayStu);
while (loop)
{
cout << "cmd> ";
cin >> input;
switch (input)
{
case 1:
AddCourse(&Course1, arrayCou);
break;
case 2:
AddStudent(&Student1, arrayStu);
break;
case 3:
AddStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 4:
AddGrade(&Student1, &Course1, arrayStu, arrayCou);
break;
case 5:
PrintCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 6:
PrintStudent(&Student1, &Course1, arrayStu, arrayCou);
break;
case 7:
PrintStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 8:
AvgStuCourse(&Student1, &Course1, arrayStu, arrayCou);
break;
case 9:
loop = 0;
break;
default:
break;
}
}
}