私はclass.cpp
とclass.h
で定義されたクラスを持っています。このクラスは、プライベートなメンバやメソッドに対して、stuff.h
(もちろんstuff.cpp
)で定義されているいくつかの構造体/クラス/型/何でも使用します。私の主なプログラムはmain.cpp
で、#include
s class.h
ですが、stuff.h
のものは気にしません。違いがある場合は、class.cp
が動的に読み込まれるはずです(.dll/.so)。
main.cpp
に名前空間の汚染を引き起こし、最終的なプログラムにリンクすることによって余分な肥大化を招くだけなので、stuff.h
はclass.cpp
とstuff.cpp
にのみ含まれているのが理想です。
class.h
にはprivate:
の部分が使用されているので、stuff.h
をclass.h
に含めなければならないという問題があります。 main.cpp
はclass.h
を持ち込むので、stuff.h
も得られます!プライベートデータのヘッダーだけを.hファイルに含めます。
これは明らかです。 C#では、これは部分クラスによって解決できます。どのようにC++でこれを行うでしょうか?
'main.cpp'に含まれる' stuff.h 'のシンボル、または実際の定義が心配ですか?意味 - 'stuff.h'のシンボルの前方宣言だけがある場合、それでも' main.cpp'には問題がありますか? –
@ eli-iserフォワード宣言とは何ですか? – baruch
Sorenとks1322で説明されているように、 'class Stuff'を持っていれば' class stuff 'を '#include' stuff.h'を使わずに 'class Stuff;'を使って 'class.h'で使うことができます。これは 'class.h 'が' #include'なしでクラス 'Stuff'を認識するようにenalbeします。 –