2016-11-05 127 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?