簡體   English   中英

用C ++編譯模板頭

[英]Compiling template header in C++

我有一個main.cpp和node.h(template)文件。 當我僅編譯包含node.h的main.cpp時,它似乎可以工作。 我想知道是否可以不編譯node.h嗎?

C ++編譯器通常要求所有模板的定義在使用它們的每個翻譯單元中都是可見的(一個真正的例外是,如果僅允許使用特定的專業化,並且這些專業化在某個地方實例化,則在該特定情況下,您可以獲得隱藏實現)。

在描述時是否將模板聲明從其定義中拆分出來,實際上僅是樣式問題。 就我個人而言,我並不在乎,因為這使得找到任何給定模板的實際代碼變得更加困難。

但是,如果您要處理的代碼足夠大(例如,很多boost庫都在其中),那么就可以從許多私有部分來實現公共模板就很有意義了,而讓這些部分成為拆分成自己的標題。 但是同樣,只要在每個翻譯單元中都可以使用所有需要的代碼,它就是樣式,只要選擇是一致的,一個選擇實際上就不會比另一個更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM