包含在标头或cpp中-Qt中首选

Hat*_*ate 4 c++ qt header include

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

Dav*_*men 5

我的规则是,头文件仅包括那些定义有问题的头文件使用的功能的文件。

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

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