不为成绩类命名类型

Does not name a type for Grades class

本文关键字:类型      更新时间:2023-10-16

这是我的学生。它给了我成绩没有命名类型错误。你可以帮我吗?

#ifndef STUDENT_H
#define STUDENT_H
#include <string>
#include "Grades.h"
using std::string;
class Student
{
public:
    Grades *grade;
    Student();
    Student(int, string);
    string  studentName;
    int     studentID;
    void displayStudent();

protected:
private:
};
#endif

这可能会减少,但看起来您有一个循环引用错误:学生指的是成绩,成绩指的是学生(也许?

而不是#include "Grades.h",只需添加对类的前向引用:class Grades;,看看是否有效。或者,在 Student.h 中执行等效操作。

通常,如果您有两个必须相互引用的类,您只需在 .h 文件中使用前向引用并将#include放在.cpp中。或者摆脱周期性参考...

您似乎有一个循环引用,其中两个头文件相互包含。这通常会导致编译错误,除非通过一些技巧解决。

在您的情况下,您甚至不需要交叉包含两个头文件。在大多数情况下,向前声明就足够了:

class Grades;

而不是

#include "Grades.h"

应该解决这个问题。您可以对头文件中的所有类型执行此操作,除非您从它们继承或将它们作为类中的非指针/非引用成员。即使对于函数参数,您也不需要包含它们。