爲了讓一些代碼更易於閱讀,我將它分割成多個文件。其中一個文件只包含2個初始化方法。值得用這些方法的聲明來創建一個.h,包括那個,或者我應該直接包含.cpp,只有兩種方法,是否值得符合標準?我應該總是將我的文件分割成聲明(.h)和定義(.cpp)
回答
你不應該包括CPP文件,不管幾個定義如何在其中:包括在其他幾個cpp文件會產生重複的符號每個定義,導致鏈接錯誤。
如果你建立了在多個翻譯單位使用(這是一個奇特的名字爲cpp文件),你應該建立一個標題爲它的類。模板沒有cpp文件 - 只需要一個頭文件。
雖然通常的做法是讓一個CPP /頭對每一類,它是確定包括在一個翻譯單元的多個相關的類,並把所有的聲明在一個頭。
Thankyou,我會盡快接受。 – w4etwetewtwet
編譯器不會阻止您在標題中添加多個相關類,但要小心!我有一個項目對我來說變得非常大,最終發現很難找到與數學庫有關的類。即使它們都是相關的,如果我實際上將它們分開並保持1:1標題/翻譯單元範例,我將花更少的時間來搜索事物。 –
@DJPeterson我同意,在一個標題中粘貼多個類應該是一個例外,而不是一個規則。關於唯一一次我認爲是緊密耦合項目的「集羣」的類,例如一個類和它的「朋友」比較器。這種情況在C++ 11中應該會少一些。 – dasblinkenlight
就像之前說的,你不包括.cpp文件。如果你的代碼需要圍繞項目,那麼頭文件是必須的。但是,您始終可以使用extern。 http://www.cplusplus.com/forum/general/21368/
A .cpp
包含的文件是錯誤的.h
文件。
.cpp
和.h
是對程序員(以及偶爾在工具鏈中使用的工具)有意義的擴展。如果你開始使用.cpp
文件,即使你說服你的工具鏈如何處理它,你也會迷惑其他程序員(包括你自己在幾個月/幾年)。
創建報頭文件只設置的工具或功能有時可以接受的。調用該文件.cpp
不是。
- 1. 我應該用C++分開cpp和h文件嗎?
- 2. C++如何正確地將.cpp分割成.cpp和.h
- 3. .cpp vs .h和我應該在哪裏放置函數定義
- 4. 我把我的項目分割成.h和.c文件。這是我應該這樣做的正確方法嗎?
- 5. 我應該在.pch文件還是.h文件中定義宏?
- 6. 我應該在.cpp或.h文件中包含頭文件?
- 7. 在.h和.cpp文件中分隔定義和聲明時,是否可以內聯getter和setter?
- 8. 我應該在.h文件還是在.cpp文件中放置POD結構?
- 9. 從.ui文件生成.h和.cpp
- 10. 聲明頭文件和cpp文件C++
- 11. 如何將構造函數明確聲明爲單獨的.h&.cpp文件?
- 12. C++ .h和.cpp文件分開
- 13. 我不能在我的cpp文件中聲明一個地圖
- 14. 代碼中的.h聲明和定義的.cpp給出錯誤調用DLL時
- 15. 在C++ .h文件中定義和聲明函數/方法
- 16. 模板和分裂成的.h/.cpp文件
- 17. 我應該聲明我的byte []
- 18. 從.h文件生成.cpp源文件
- 19. 將類聲明放在.cpp文件中
- 20. 我有.wav文件。我想將該文件分解成部分
- 21. 我應該同時使用頭文件和cpp /源文件嗎?
- 22. 我應該聲明這是const int成員變量的類嗎?
- 23. 使用C++模塊時,是否將函數聲明(.hpp文件)與它們的定義(.cpp文件)分開?
- 24. 有沒有辦法定義在單獨的.h和.cpp文件中的名稱空間中聲明的函數?
- 25. CPP | .h文件(C++)
- 26. C++正向聲明.h文件中的結構並在.cpp文件中定義結構
- 27. 在* .h中聲明的未定義引用已在另一個* .h中聲明
- 28. 我司的聲明總是出來0
- 29. 如何在.hpp/.cpp文件中定義/聲明類實例?
- 30. 我可以在c#項目中添加.h和.cpp文件嗎?
**永遠不要包含.cpp文件。決不。無論如何。** – 2013-07-15 20:23:30
@ H2CO3夠了。爲什麼不,我已經看到它在一些例子中完成了? (不是說它是正確的,只是尋找解釋爲什麼它不是)。 – w4etwetewtwet
'ld:體系結構x86_64的1個重複符號' – 2013-07-15 20:26:36