以下に簡単な例を示します。.hpp ファイルは、使用するすべてのものをインクルードまたは前方宣言する必要があることを知っています。.cpp ファイルでも使用されるすべての .hpp ファイルをインクルードするのがベスト プラクティスであるかどうか疑問に思います。私が取り組んでいる新しいプロジェクトで最近見たので、これを尋ねています。多くの場合、人々はヘッダーを含めることを避ける傾向があります。
この場合: b.hpp を a.cpp に含めるのは良いことですか? .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;
}