C++ c++;makefile编译出错,无法转换main()::

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

我现在正在做这个项目,这是我第一次使用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;

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;
        }
    }
}