包括来自不同库
Include from different library
本文关键字:包括 更新时间:2023-10-16
我必须创建一个工厂方法,该方法可以从不同的库创建对象。我的目录树如下所示:
libA/src/...
libB/src/...
libC/src/...
src/...
libA、libB 等是分开编译的。
让工厂类位于libA/src/Factory.h中。它应该从libB/src/someclass.h创建一个对象。
如果我包括../../libB/src/someclass.h 在 Factory.h 中,那么 libA 无法编译,因为它无法从 someclass.h 中找到包含(comiler 在 libA/src 中查找它们,但那些在 libB/src 中)如果我不包含,它就不知道 Someclass,所以我无法创建它的实例。
有什么解决方案吗?
您正在寻找前向声明:在类只需要知道类型的标头中,使用 class AFactory;
声明它,而不是包含整个 Factory.h。
有关详细信息,请参阅此提示。
编辑
重新阅读您的问题后,我发现您希望单独编译库的事实与libA 的工厂必须知道类 libB 之间存在矛盾。然后你不能单独编译,所以我只会提供所有必要的目录路径来包含路径。
我试图重现此错误,但我的示例具有相同的目录结构并且工作正常。
#ifndef FACTORY_H_
#define FACTORY_H_
#include "../../libB/src/Someclass.h"
class Factory {
public:
Factory();
virtual ~Factory();
};
#endif /* FACTORY_H_ */
当存在直接依赖关系时,如何单独编译它们?也许您想使用静态链接库。请解释一下您的意图。
相关文章:
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 为什么 cmake 许可证<>样式不包括?
- 计算平均值,不包括上次得分
- 从多个源构造一个对象,包括一个对象向量
- 在编译中包括 Botan 2
- 将值从另一个数组写入数组,不包括不需要的值 C++
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 包括C++头文件
- CPP 包括 Azure DevOps 中的目录设置
- 包括STL,而不会乱扔全球范围
- 如何反转我的输入,包括否定
- 包括没有完整路径的我的库
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- C++包括类名间距和类实例化
- 链接错误,包括我创建的相同头文件 - C++
- 标头,包括在 Swift 项目中使用C++文件时的错误
- 如果语句不包括文本行?
- 如何将字符串与结构(也包括字符串)进行比较?
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?