我正在構建一個簡單的C++程序,它由一個主函數和兩個嵌套類組成。在每個類和函數中,我使用字符串和向量 - 因此該軟件需要額外的庫。頭文件和其他庫
每個類都在一個單獨的myClass.h
文件中定義,以及相應的myClass.cpp
。
我的問題與其他庫有關。假設我使用main.cpp
中的#include <string>
。我怎麼能通過該庫到myClass.h
和myClass.cpp
?
我正在構建一個簡單的C++程序,它由一個主函數和兩個嵌套類組成。在每個類和函數中,我使用字符串和向量 - 因此該軟件需要額外的庫。頭文件和其他庫
每個類都在一個單獨的myClass.h
文件中定義,以及相應的myClass.cpp
。
我的問題與其他庫有關。假設我使用main.cpp
中的#include <string>
。我怎麼能通過該庫到myClass.h
和myClass.cpp
?
如果您的軟件足夠簡單(例如少數翻譯單元和少於一萬行源代碼),那麼您最好有一個單個頭文件,例如myproject.h
爲您的所有項目,並#include
文件無處不在。然後,myproject.h
標頭也可以爲外部標頭(可能是標準C++庫中的<vector>
和<string>
)用於外部庫。
C++沒有要求每個類有一個頭文件(或一個翻譯單元),我相信並不總是有一個很好的理由(但其他人的想法不同)。您可以將幾個相關的類放入同一個翻譯單元中,並且可以在單個頭文件中包含許多聲明。
但所有這些都是關於意見,慣例和編碼風格的問題。對於一些簡單的項目,只要你保持一致,這並不重要。我的觀點是,在單個源文件(或頭文件)中有幾千行代碼不是問題,我通常以這種方式進行編碼。我非常不喜歡每個源文件有一個類(像Java中需要排序),因爲我討厭擁有數百個小文件(每個文件少於100行)。順便說一句,C++編譯器可能需要更長的時間來編譯你的項目,這樣的一個一類的每個文件的方法(因爲C + +容器標準頭像<map>
或<vector>
拉動了很多包含的代碼:在我的GCC 5 GNU Linux系統上#include <vector>
擴展爲一萬多行或約340千字節)。
還要注意源文件中類(和聲明)的組織比類層次結構的總體設計要少得多。例如,如果您從一個myproject.h
方法開始(如我所建議的)並且後來對其不滿意,那麼將您的課程分成幾個標題將非常容易(一小時的複製/粘貼以及幾個要添加的#include
-s) ;但重新設計你的類和它們的繼承或簽名,即你的代碼是refactoring,顯然更困難。
研究的幾個C++免費軟件(例如fish-shell,POCO,cpp-netlib,jsoncpp和許多其他人)的源代碼(例如,在http://github.com/ ...)來打造自己的意見。
你不「傳遞」庫。每個需要使用庫的源文件都應包含該庫的頭文件。如果它只是使用該庫的代碼的主體,則將#include放在.cpp文件中。如果需要,只將其添加到.h文件中 - 例如,如果包含的庫中的類用作該.h文件中聲明的函數的參數。
應該沒有必要在.h文件和相應的.cpp文件中包含相同的庫。做一個或另一個。
...並且在可能的情況下更喜歡「其他」:-) – manlio
您不''包含'庫,而是頭文件...外部庫通常具有多個公共頭文件。 –
[將庫導入到我的C++項目中,如何解決這個問題?](http:// stackoverflow。COM /問題/ 24715864 /問題進口的庫到我的-C-項目的how-to-FIX-這一點)。 –