病院で看護師をスケジュールするプログラムを書いています。2 つのクラス間の包含ループに行き詰まっていますが、どこでエラーを起こしたのかわかりません。Preference Profile のインスタンスを持つ看護師クラスがあります。この設定プロファイルには、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 にはナース オブジェクトへのポインターのみが含まれているため、ヘッダー ファイルを含める代わりに、それを前方宣言しました。ナース クラスには、PrefProfile のヘッダーが含まれています。ナース クラスのオブジェクト pref で次のエラーが発生しました: C3646 'pref':unknown override specifier。
私はC++にかなり慣れていないので、参照へのこのアプローチを使用する必要があることを読みました。この種の包含ループを回避する簡単な方法はありますか? または、コードに何か不足していますか?