隐藏C ++模板类成员函数的定义

时间:2016-11-05 09:59:04

标签: c++ templates

C ++编译器需要访问方法的实现才能实例化模板类。因此,我们需要在头文件中包含模板的定义,该模板声明该模板或在头文件中定义它们。但是我想从我的用户隐藏我的函数的实现(定义),原因很多,并且希望确保他们只能访问函数声明。在C ++中使用模板时是否可以这样做?

1 个答案:

答案 0 :(得分:3)

通常通过创建目录层次结构impldetail来完成此操作(例如)。

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?

的行上做点什么