C ++编译器需要访问方法的实现才能实例化模板类。因此,我们需要在头文件中包含模板的定义,该模板声明该模板或在头文件中定义它们。但是我想从我的用户隐藏我的函数的实现(定义),原因很多,并且希望确保他们只能访问函数声明。在C ++中使用模板时是否可以这样做?
答案 0 :(得分:3)
通常通过创建目录层次结构impl
和detail
来完成此操作(例如)。
impl
通常会在detail
内部显示已公开的API成员函数的实现,正如您可能已经猜到的那样,具有您不希望公开的粗略细节。 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?