2016-11-05 54 views
0

C++編譯器需要訪問方法的實現以實例化模板類。因此,我們需要在聲明該模板的頭文件中包含模板的定義,或者在頭文件中定義它們。但是由於很多原因,我想隱藏我的用戶函數的實現(定義),並希望確保他們只能訪問函數聲明。在C++中使用模板時可以這樣做嗎?隱藏C++模板類成員函數的定義

回答

3

這通常通過創建目錄層次結構impldetail來完成(例如)。

impl將通常具有暴露的API成員函數的實現,而在detail內部,您可能已經猜到了,具有您不想公開的細節。 C++開發人員非常瞭解這個系統。

舉個例子:

 
my_service.hpp 
impl/my_service.hpp 
impl/my_service.ipp (OR) 
detail/my_service.ipp 

所以,這個想法是分裂的頭文件,並提供用戶只包括您的頂層頭文件,這將在內部包括其他文件。

但沒有人阻止用戶直接包含impl頭文件。如果你想避免這一點,那麼你可以做一些事情Prevent header from being included in some files, in compilation time?