两个引用彼此的类:未知的覆盖说明符错误

时间:2016-10-12 18:02:11

标签: c++ header multiple-inclusions

我正在编写一个计划来安排医院的护士。我坚持两个类之间的包含循环,但我不知道我在哪里犯了错误。 有一个护士班,有一个偏好配置文件的实例。此首选项概要文件具有指向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类的对象pref遇到以下错误:C3646'pref':未知的覆盖说明符。

我对C ++很陌生,我读到应该使用这种引用方法。是否有一种简单的方法可以避免这种包含循环?或者我在代码中遗漏了什么?

0 个答案:

没有答案
相关问题