2013-07-15 35 views
2

爲了讓一些代碼更易於閱讀,我將它分割成多個文件。其中一個文件只包含2個初始化方法。值得用這些方法的聲明來創建一個.h,包括那個,或者我應該直接包含.cpp,只有兩種方法,是否值得符合標準?我應該總是將我的文件分割成聲明(.h)和定義(.cpp)

+11

**永遠不要包含.cpp文件。決不。無論如何。** – 2013-07-15 20:23:30

+0

@ H2CO3夠了。爲什麼不,我已經看到它在一些例子中完成了? (不是說它是正確的,只是尋找解釋爲什麼它不是)。 – w4etwetewtwet

+0

'ld:體系結構x86_64的1個重複符號' – 2013-07-15 20:26:36

回答

3

你不應該包括CPP文件,不管幾個定義如何在其中:包括在其他幾個cpp文件會產生重複的符號每個定義,導致鏈接錯誤。

如果你建立了在多個翻譯單位使用(這是一個奇特的名字爲cpp文件),你應該建立一個標題爲它的類。模板沒有cpp文件 - 只需要一個頭文件。

雖然通常的做法是讓一個CPP /頭對每一類,它是確定包括在一個翻譯單元的多個相關的類,並把所有的聲明在一個頭。

+0

Thankyou,我會盡快接受。 – w4etwetewtwet

+0

編譯器不會阻止您在標題中添加多個相關類,但要小心!我有一個項目對我來說變得非常大,最終發現很難找到與數學庫有關的類。即使它們都是相關的,如果我實際上將它們分開並保持1:1標題/翻譯單元範例,我將花更少的時間來搜索事物。 –

+0

@DJPeterson我同意,在一個標題中粘貼多個類應該是一個例外,而不是一個規則。關於唯一一次我認爲是緊密耦合項目的「集羣」的類,例如一個類和它的「朋友」比較器。這種情況在C++ 11中應該會少一些。 – dasblinkenlight

1

A .cpp包含的文件錯誤的.h文件。

.cpp.h是對程序員(以及偶爾在工具鏈中使用的工具)有意義的擴展。如果你開始使用.cpp文件,即使你說服你的工具鏈如何處理它,你也會迷惑其他程序員(包括你自己在幾個月/幾年)。

創建報頭文件只設置的工具或功能有時可以接受的。調用該文件.cpp不是。

相關問題