1

病院で看護師をスケジュールするプログラムを書いています。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++にかなり慣れていないので、参照へのこのアプローチを使用する必要があることを読みました。この種の包含ループを回避する簡単な方法はありますか? または、コードに何か不足していますか?

4

0 に答える 0