なぜ、そうなるのかというも、いずれ追記するとして、とりあえず意識するべきことを列挙しておく。
- ヘッダファイルで他のヘッダファイルのインクルードは原則禁止
例外としてインライン展開用はOK。 - ヘッダを書き換えると、ヘッダをインクルードしているすべてのソースコードの再コンパイルが必要
なので、できるだけインクルードは減らした方がいいし、cpp側だけの修正ならば、その部分のcppだけ再コンパイルすればいいので、ビルド時間は大きく伸びない。 - pImplイディオムを使えば、pImplの実装を修正する分には、ヘッダの修正が不要なので、再コンパイル対象は限定的。
- メンバ変数は実体ではなくポインタや参照にすれば、前方宣言によりヘッダ側でインクルードが不要になる。