<分区>
C++ 编译器需要访问方法的实现才能实例化模板类。因此,我们需要在声明该模板的头文件中包含模板的定义,或者在头文件中定义它们。但由于多种原因,我想对我的用户隐藏函数的实现(定义),并希望确保他们只能访问函数声明。在 C++ 中使用模板时是否可以这样做?
<分区>
C++ 编译器需要访问方法的实现才能实例化模板类。因此,我们需要在声明该模板的头文件中包含模板的定义,或者在头文件中定义它们。但由于多种原因,我想对我的用户隐藏函数的实现(定义),并希望确保他们只能访问函数声明。在 C++ 中使用模板时是否可以这样做?
最佳答案
这通常(例如)在 boost 中通过创建目录层次结构 impl
和 detail
来完成。
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? 行做一些事情
关于c++ - 隐藏C++模板类成员函数的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40436874/