2个头文件中的2个类

时间:2017-04-01 20:51:03

标签: c++ class header-files

我正在尝试编译一个具有2 .h和3.cpp的程序。我一直收到同样的错误消息:“错误:'Patrons'没有为Patrons匹配的类型命名;”

当我将整个代码放在一个.cpp文件中时,我没有错误并且编译,但是对于我的任务,我需要在单独的文件中进行。

我认为我编写了正确的代码所以我不知道为什么会收到错误消息。

// class patrons.h

using namespace std;

class Patrons //named it patrons because this is where i have a list of all    the patrons
{   

    int patronscnt;
    public:
    std::list<string>::iterator PL;
    std::list<string> patslist;
    string name;
    void patronslist();
    void addpatron();
    void removepatron();
    void editpatron();

};

-

// class patron.h

using namespace std;

class Patron //class decleration. Named it patron because it has the information of one patron
{
    string x;
    string input;//class members
    Patrons match;
    public:

    void ID();
    void email();
    void phone();
    void address();
    void borrowstatus();
    void finestatus();
    void check(string);
    //update
 };

2 个答案:

答案 0 :(得分:1)

你可以在patron.h中包含patrons.h。

您可以通过将以下内容添加到patron.h文件的顶部来完成此操作:

#include "patrons.h"

但是在我看来,通常最好存储指向对象而不是整个对象的指针。如果你要将patron.h中的匹配变量切换为Patrons指针:

Patrons *match;

然后,您可以通过将以下内容添加到patron.h文件的顶部来转发声明Patrons类,而不是包含patrons.h:

class Patrons;

然后,如果需要,您可以在patron.cpp文件中包含patrons.h。前向声明将帮助您运行循环依赖。

答案 1 :(得分:0)

你需要在Patrons中加入Patrons.h:#include "Patrons.h"