我正在编写一个程序来安排医院的护士。我被两个类之间的包含循环困住了,但我不知道我在哪里出错了。有一个护士类有一个偏好配置文件的实例。此首选项配置文件有一个指向 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 的标头。我在 Nurse 类的对象首选项处遇到以下错误:C3646 'pref':unknown override specifier。
我对 C++ 很陌生,我读到应该使用这种引用方法。有没有一种简单的方法可以避免这种包含循环?或者我在我的代码中遗漏了什么?