1st - main.h が必要ですか?
めったにありません。 main.cpp
を含む翻訳単位をコンパイルしていることを意味しますmain()
。これは通常、 のシンボルについて知る必要がない他の低レベル ライブラリのクライアント コードですmain()
。なんらかの理由でデザインが周期的になり、出力したものを別の に分割しない正当な理由 (膨大な時間的プレッシャー?) があった.cpp
場合、最終的にmain.h
. これは実際には、他の翻訳単位がアクセスする必要があるかもしれない main.cpp のシンボルのみを宣言する必要があります。具体的には、car.h または speed.h 宣言を必要とする main.h 関数を公開しない限り、car.h および/または speed.h を含めないでください。たとえば、型の引数を取る main.cpp 内の関数の宣言などです。 car.h または speed.h から。
2番目 - main.h に #include car.h と #include speed.h がある場合、car/speed.cpp に #main.h を追加するだけで済みます (つまり、car/speed.h が含まれます)。
上記のように、これはほぼ間違いなく非常に壊れた設計です: main.cpp は car.h と speed.h を直接インクルードすることが期待されます。 h と speed.h には、両方へのアクセスを必要とする特定のクライアントにちなんで名付けるのではなく、包括的なテーマ (transport.h など) に基づいて名前を付ける必要があります。main.h は、main.cpp から何かを公開する必要がある場合にのみ存在する必要があることに注意してください。
3番目 - あなたはそのルートに行くべきですか?
上で説明したことを考えると、おそらくそうではありません。