请在下面找到一个简单的例子。 我知道 .hpp 文件必须包含或转发声明它使用的所有内容 我想知道将 .cpp 文件中使用的所有 .hpp 文件也包括在内是否是最佳做法。 我问这个是因为我最近看到我正在从事的一个新项目,在很多情况下人们倾向于避免包含标题。
在这种情况下:将 b.hpp 包含在 a.cpp 中是否合适? 我知道它已经通过include a.hpp被包含了,但是我个人觉得如果一个符号出现在一个.cpp中,它应该被包含(或者如果可能的话前向声明)
a.hpp
#pragma once
#include "b.hpp"
class C; //forward declaration of C
class A
{
public:
B get_b();
private:
B _b;
C* _c;
};
a.cpp
#include "a.hpp"
//needed or I can leave it out, since B is included already in a.hpp?
#include "b.hpp"
B A::get_b()
{
return _b;
}
最佳答案
尽量将 #include
移动到 .cpp
文件中。它减少了编译时间并避免在整个项目中传播声明。所以,如果您可以在 .cpp
文件中包含 b.hpp
。
一旦在头文件中包含了b.hpp
,就不需要在.cpp
文件中包含它了。
由于 header 保护(如果您放置了它们),将其再次包含在 .cpp
文件中无效。
关于c++ - 在 .cpp 标准中包含文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988113/