在纯虚拟类中包含头文件
headerfile inclusion in pure virtual classes
如果我有一个像下面这样的纯虚拟类:
我有如下的类结构:
class interface_class {
virtual void someFunction(MyClassA& a) = 0;
virtual void someFunction(MyClassB& b) = 0;
}
包含MyClassA/MyClassB的正确方式是什么?我应该在接口类的头文件中做一些前向声明,并在实现的头文件进行真正的包含,还是应该将MyClassA/B的头文件直接包含在接口类中?
对这两个类都使用正向声明
事实上,在任何可能的地方都要使用正向声明
使用正向声明可以节省编译时间&还限制您创建不需要的依赖项。
您应该在单独的头文件中使用正向声明。
也就是说,您已经拥有了定义为MyClassA
和MyClassB
的当前头文件。您需要对同时使用的类进行分组,并创建一个新的头文件,如下所示:
文件MyClassesFwd.h
(命名约定由您决定)
namespace XX {
class MyClassA;
class MyClassB;
}
您的界面标题:
#include <MyClassesFwd.h>
// ... your interface definition ...
另一方面,实际的源文件看起来是这样的:
#include <MyClassA.h>
#include <MyClassB.h>
#include <MyInterface.h>
这将防止您每次都重写正向声明。
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 如何为包含头文件的目标编写生成文件?
- 如何在 CMakeLists.txt Qt Creator 中包含头文件?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- 在生成文件先决条件中包含头文件的原因
- My Project的属性配置正确,但Visual Studio仍然无法打开包含头文件
- 在 PostgreSQL C 扩展中包含头文件
- 是否可以在C++中以间接方式包含头文件
- 是否需要包含头文件?
- 我收到未声明的标识符错误,但我已包含头文件?
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何在C++中包含头文件时错误地重载
- 我在C++中无效使用不完整的类型类错误,如何正确包含头文件?
- 虚幻引擎4.16,C++包含头文件
- C++多次包含头文件
- 令牌之前的预期类名 '{' - 包含头文件和 CPP 文件
- 在.cpp中包含头文件会导致令人讨厌的错误
- 如何列出用于在Qt项目中包含头文件的所有路径
- 尽管包含头文件,但仍找不到嵌套命名空间