2015-08-23 53 views
0

我想下象棋。在上圖中,我將一個指向對象正方形的指針指向它的「位置」,反之亦然:用方形指向數字。問題是這些類的定義在單獨的文件中。當我在figure.cpp,反之亦然,編譯器在顯示用#include的線條,就像寫#include "square.cpp"許多錯誤:兩個頭文件或源文件互相引用

從[路徑方] [路徑圖】

有什麼辦法使其工作?

+1

谷歌'前向聲明'。永遠不會有包含對方的.h文件。 –

+2

將您的代碼分解爲.h和.cpp文件,並僅包含.h文件。 – interjay

+0

題外話:我很好奇你的設計。爲什麼圖和廣場相互瞭解? – MABVT

回答

0

首先,請注意,您可避免任何應用程序#include(因此只包括系統頭或外部庫頭),只是複製&粘貼源代碼到幾文件。這將是不方便的。詳細瞭解C preprocessor。請注意,它主要是在處理文本(例如,不太瞭解C++語法或AST)。

然後,傳統,頭文件主要包含聲明(類型,structclass,函數,變量...)和定義static inline功能(或您的class -es的inline成員函數 )。

所以你最好不要#include "square.cpp"figure.cpp源文件,而只是有一個單一的myheader.h文件與#include "myheader.h"無論是在你的square.cpp和你figure.cpp源文件(即translation units)。

查看更多書籍about C++ programming並研究了一些C++ free software的源代碼, hun7err's ChessChessPlusPlus(我不擅長國際象棋程序設計,並通過快速谷歌搜索發現他們兩個)

0

嘗試添加包括頭衛士:

#ifndef YOURHEADER_H_ //at the start of the file 
#define YOURHEADER_H_ 
// the header contents 
#endif //this has to be at the end of the file 
+0

這對兩個互相引用的類沒有幫助。 – interjay