Попытка использовать объект в заголовочном файле другого класса, ошибка «Переопределение класса» - PullRequest
0 голосов
/ 10 ноября 2019

В настоящее время я пытаюсь определить класс «Школа» в файле School.hpp. Часть школьного класса - это вектор объектов ученика, называемый ростером. Если я #include «Student.hpp» в School.hpp, компилятор выдает ошибку «переопределение« ученика класса »». Если я не включаю Student.hpp, он выдает ошибку «Студент не был объявлен в этой области» для std :: vector .

Я не знаю, где он думает, что я »я переопределяю класс Student, так как у меня есть определение класса для Student только один раз, и это в файле Student.hpp.

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

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

Я новичок в C ++ и работаю над некоторыми старыми школьными проектами, поэтому извиняюсь, еслиэто глупая ошибка с моей стороны.

1 Ответ

0 голосов
/ 10 ноября 2019

Похоже, вы не сказали препроцессору, что заголовочный файл должен быть включен один раз.

Вверху каждого заголовочного файла ('* .hpp') добавьте эту строку:

#pragma once

Для получения дополнительной информации см. эту статью

...