2017-04-01 56 views
0

我正在编译一个具有2.h和3.cpp的程序。我不断收到相同的错误消息:“错误:'老主顾'不会命名类型赞助人匹配;”2个头文件中的2个类

当我把整个代码放在一个单独的.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

这有一个奇怪的命名。为什么单数的“赞助人”包含复数的“赞助人”?一个随便的读者会期待相反的结果。 – user4581301

回答

1

你可能包括patron.h patrons.h。

您可以通过添加实现这一点下面的patron.h文件的顶部:

#include "patrons.h" 

然而,在我看来,它通常是更好地存储指向的对象,而不是整个对象。如果你要在比赛可变开关在patron.h成为赞助指针:

Patrons *match; 

,而不是包括patrons.h然后,您可以转发声明赞助类,加入以下内容的顶部patron.h文件:

class Patrons; 

然后如果需要的话,你可以在您的patron.cpp文件patrons.h。正向声明将帮助你运行到循环依赖。

+0

谢谢!我能够编译它。 – user143

0

您需要包括Patrons.h在食客:#include "Patrons.h"