c++ - 包含在 header 或 cpp 中——Qt 中首选的是什么

标签 c++ qt header include

当我写一个 C++ 类时,我只在头文件中包含了特定情况。我更喜欢前向声明,我相信这是 C++ 中的最佳实践。但是 Qt 类通常有很多属于标准 Qt 类的字段,因此将它们全部写在前向声明中似乎不是一个好主意。有什么首选方法吗? Qt 有大量的文档,所以我认为它已经回答了我的问题,但我才刚刚开始阅读它。

最佳答案

我的规则是头文件只包含那些定义相关头文件使用的功能的文件。

假设您在 header 中有指向某个类 Foo 的指针和引用,但 header 从未插入或实例化这些对象。在这种情况下,您不需要类的定义。您只需要一个前向声明。

另一方面,如果您插入类型为 Foo 的对象,或者如果您有类型为 Foo 的数据成员或变量,则前向声明是不够的.现在您确实需要完整的定义,所以现在是#include 定义类 Foo 的头文件的时候了。 (或者,如果在内联函数定义中使用,您可能需要重新考虑内联并将实现放在单独的源文件中。)

关于c++ - 包含在 header 或 cpp 中——Qt 中首选的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160320/

相关文章:

c++ - 将项目从QTreeWidget拖动到QGraphicsView

android - c++ android ndk 使用数组

c++ - 如何在 C++ 中与另一个类共享变量

c++ - 程序在 QT opencv 中意外完成

html - 如何让我的网站背景变成渐变色?

python - 读取在 ajax 中传递的自定义 header

c++ - C++ 的头文件和源文件组织

c++ - 非类型参数的模板参数必须是表达式

c++ - 调试构建和发布构建是什么意思,区别和用途

c++ - QListView selectionModel 不发送 selectionChanged 信号