试图在另一个类的头文件中使用对象,得到“类的重新定义”错误

时间:2019-11-10 05:48:04

标签: c++ class compiler-errors header-files redefinition

我当前正在尝试在School.hpp文件中定义“学校”课程。 School类的一部分是称为“名册”的Student对象的向量。如果我#在School.hpp中包含“ Student.hpp”,则编译器将引发“重新定义“班级学生””错误。如果我不包括Student.hpp,则它将为std :: vector 引发“此范围内未声明'Student'”错误。

我不知道在哪里重新定义Student类,因为我只有一次Student的类定义,而这在Student.hpp文件中。

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

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

我是C ++的新手,正在从事一些老派项目,如果这对我来说是个愚蠢的错误,我深表歉意。

1 个答案:

答案 0 :(得分:0)

似乎您没有告诉预处理器头文件必须被包含一次。

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

#pragma once

有关更多信息,请参见this article