2017-04-01 91 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"