C++ c++;makefile编译出错,无法转换main()::
我现在正在做这个项目,这是我第一次使用makefile 我得到的错误是: HW1.cpp:45:55: error: could not convert ‘Student1’ from ‘main()::Student’ to ‘Student’ 头文件:C++ c++;makefile编译出错,无法转换main()::,c++,makefile,C++,Makefile,我现在正在做这个项目,这是我第一次使用makefile 我得到的错误是: HW1.cpp:45:55: error: could not convert ‘Student1’ from ‘main()::Student’ to ‘Student’ 头文件: #include <iostream> #include <string.h> #include <cstring> #include <iomanip> using namespace std
#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;
#包括
#包括
#包括
#包括
使用名称空间std;
常量int MAXSIZE=101;
体类型
{
字符串ID;
字符串名;
弦乐专业;
};
结构课程
{
字符串ID;
字符串标题;
弦乐部;
双级;
};
学生组[101][3];
课程编号[101][101][5];;
课程1;
学生1;
函数定义非常长,所以我不想包含所有的函数定义,但是有没有办法修复makefile?在main函数中每次使用Student1或Course1都会出现相同的错误。main():Student
表示您的Student
结构在main
中声明<函数中的code>struct声明非常少见,在您的例子中,这是一个错误。这是由于
#include "list.cpp"
在主功能中
您应该在函数外部声明struct
。为此,将#include
指令移动到main
之前:
#include "function.h"
#include "list.cpp"
...
int main()
{
...
}
所有函数都必须在c/c++中具有返回类型(如果未返回任何内容,则应为void),并且主函数必须返回一个整数,以便操作系统可以读取返回的数字并确定程序是否成功执行。(如果在主函数中返回非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;
}
}
}
#包括“header.h”
#包括“function.h”
int main()
{
int输入=0;
布尔环=1;
#包括“list.cpp”
重置阵列(arrayCou、arrayStu);
while(循环)
{
cout>输入;
开关(输入)
{
案例1:
添加课程(课程1和课程1,arrayCou);
打破
案例2:
AddStudent(和Student1,arrayStu);
打破
案例3:
增加课程(学生1和课程1、arrayStu和arrayCou);
打破
案例4:
增加年级(学生1、课程1、arrayStu、arrayCou);
打破
案例5:
印刷课程(学生1、课程1、arrayStu、arrayCou);
打破
案例6:
PrintStudent(学生1和课程1、arrayStu和arrayCou);
打破
案例7:
打印课程(学生1和课程1,arrayStu和arrayCou);
打破
案例8:
AVGSTU课程(学生1、课程1、arrayStu、arrayCou);
打破
案例9:
循环=0;
打破
违约:
打破
}
}
}
应该是int main()
您忘记了main.BTW上的返回类型,请显示Makefile
或至少显示编译命令\include“list.cpp”
-在函数中包含cpp
?真的吗?顺便说一句,你的头文件似乎没有。如果是这样,请在尝试其他操作之前添加它们。另一方面,您可能永远不应该包含.cpp文件。所有函数都必须在c/c++中具有返回类型(如果未返回任何内容,则应为void),并且主函数必须返回一个整数,以便,操作系统可以读取返回的数字并确定程序是否成功执行。(如果您在主函数中返回非0数字作为返回,OS认为程序无法正常执行),如果您明确说明原始代码中存在的错误,这将非常有用。@meetthakkar您应该将您所做的添加到文本中的答案。@meetthakkar这确实需要在您的答案中
#include "function.h"
#include "list.cpp"
...
int main()
{
...
}
#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;
}
}
}