尝试使用另一个 class 的头文件中的对象,出现 "redefinition of class" 错误

Trying to use an object in another class's header file, getting "redefinition of class" error

我目前正在尝试在 School.hpp 文件中定义 class "School"。 School class 的一部分是 Student 对象的向量,称为 roster。如果我在 School.hpp 中#include "Student.hpp",编译器会抛出 "a redefinition of ‘class Student’" 错误。如果我不包含 Student.hpp,它会抛出 std::vector 的“'Student' 未在此范围内声明”错误。

我不知道它认为我在哪里重新定义了 Student class,因为我只有一次 Student 的 class 定义,并且在 Student.hpp 文件中。

// School.hpp
#include <vector>
#include "Student.hpp"

class School
{
    // instance variables
    std::vector<Student> roster;

我是 C++ 的新手,正在做一些老式的项目,如果这是我犯的一个愚蠢的错误,我深表歉意。

你好像没有告诉预处理器必须包含一次头文件。

在每个头文件 ('*.hpp') 的顶部,添加以下行:

#pragma once

有关详细信息,请参阅 this article