被同事扔過來hpp文件作爲接口文件怎麼辦?

hpp文件一般是聲明和定義都在一個文件裏面,使用的時候,直接include就可以用了,不需要額外編譯鏈接庫。

關鍵是給的hpp文件裏面還有namspace 包含這。

1 如果我在多個.cpp文件中使用,都需要include進來,這樣鏈接的時候,就會重複定義。

2 如果我不include,直接extern裏面的接口函數,就會報錯找不到namespace 的定義。

問題看似已經無解了,仔細琢磨了一下,有兩種辦法來解決。

一 這個hpp文件只能定義一次,那隻能自己再套一層接口,把hpp包裝起來,給自己提供一個接口.h 和定義.cpp 

這樣單獨把hpp編譯成.o 。

二 在所有使用hpp中的接口的地方,

定義同名的namespace, 然後在namespace裏面extern hpp接口中的方法,這樣就避開了namespace的限制。

也是單獨編譯hpp,然後鏈接過來就可以了。

不過兩種做法都比較坑,最後要求提供接口的同學改了。

 

hpp 一般是用於模板元編程的時候,因爲模板元編程的時候,在模板參數傳遞進來之前,

類是沒有定義的,所以模板元類的 '定義'(實現) 和聲明一定要放在一個文件中。

當調用的地方,傳遞了模板參數之後纔是定義了類,這樣也不會重複定義,因爲每一個模板元定義出來的類都是不

同的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章