C++ 使头文件的一部分对客户可见

Luk*_*uke 1 c++

我的 C++ 软件使用另一个收集常见类/函数的存储库。很多时候,我的软件只使用一个头文件中提供的几个相关类之一。假设外部存储库有一个文件“data_types.h”,包含三个类。

class X { // definition }

class Y { // definition }

class Z { // definition }
Run Code Online (Sandbox Code Playgroud)

我的项目使用class Y来自标题。当发布给客户时,我需要包含我的 lib 文件以及 this 的定义class Y。如何向客户隐藏 X 类和 Z 类(因为它们未在我的项目中使用)?

有某种包装方法可以推荐吗?

Joh*_*nck 5

您需要将此类标头拆分为至少两个,以便您可以发送必要的标头,而无需发送不必要的部分。

如果您无法修改标头,另一种方法是简单地将必要的部分复制粘贴到新标头中,如果您内部需要其他部分,则在构建时在内部继续使用原始标头。只要您在标头的简化版本中定义完全相同的类,这就是有效的。如果您对它们进行不同的定义,则会违反ODR