我使用了几个 3rd 方库,比如 boost,我的项目中有一个类,假设它叫做“MyClass”
“MyClass”的所有公共函数只使用标准类型(int、char、string),但私有函数使用来自 boost 的智能指针和来自其他库的其他算法。
因此,在我在 H 文件中编写类(及其函数)的声明之前,我编写了几个包含文件。
为了使项目编译,我在项目属性中添加了一些附加包含库。一切正常。
问题是,当我想从另一个名为 USERPROJECT 的项目(该类是 extern)中使用这个类时,我需要在 USERPROJECT 项目中包含 MyClass.h 文件,然后什么都不会编译,因为 MyClass.h 包含 boost 和其他东西没有在 USERPROJECT 中配置(我没有在这里配置额外的包含库,我不想因为他不需要知道它们,它们在 MyClass 类的私有函数中)。
我的解决方案是什么?
- 我应该将 MyClass 拆分为 2 类,一类用于接口,一类用于实现?
- 我应该从 H 和 MyClass 中删除所有包含并使用前向声明吗?(我试过但编译失败)
- 有没有更好的解决方案
提前致谢