Два класса ссылаются друг на друга: неизвестная ошибка спецификатора переопределения

Я пишу программу для планирования медсестер в больнице. Я застрял с циклом включения между двумя классами, но я не знаю, где я сделал ошибку.
Есть класс медсестры, у которого есть экземпляр профиля предпочтений. Этот профиль предпочтений имеет указатель на объект Nurse.

Заголовок класса медсестры:

 //Include guards
#ifndef NURSEDEF
#define NURSEDEF

#pragma once
//Forward declared dependencies
class Department;

//Included dependencies
#include "PrefProfile.h"
//Actual class
class Nurse
{
public:
Nurse();
~Nurse();
Nurse(string id, Department *dept);
Nurse(int type, double emplRate, Department *dept);

Department* getDept();
string getID();

bool setType(int type);
void setEmplRate(double emplRate);
bool setPrefProfile(int day, int shift, int value);

private:
string ID;
double emplRate;
int type;
Department *dept;
PrefProfile pref;
};

#endif

Заголовок класса PrefProfile:

//Include guards
#ifndef PREFPROFILEDEF
#define PREFPROFILEDEF

#pragma once
//Forward declared dependencies
class Nurse;

//Included dependencies
#include "Support.h"
//Actual class
class PrefProfile
{

public:
PrefProfile();
~PrefProfile();
PrefProfile(Nurse *nurse);

bool addPref(int day, int shift, int pref);
int readPref(int day, int shift);

private:
Nurse *nurse;
int profile[maxDays][maxShifts];
};

#endif

Поскольку PrefProfile содержит только указатель на объект медсестры, я пересылаю его, а не включаю заголовочный файл. Класс Nurse включает заголовок PrefProfile. Я сталкиваюсь со следующей ошибкой в ​​pref объекта в классе Nurse: C3646 ‘pref’: неизвестный спецификатор переопределения.

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]