ヘッダーファイルの循環参照を避けるために、C++ で前方参照/宣言を行うにはどうすればよいですか?
ヘッダー ファイルに #ifndef ガードがありますが、メモリは、この前方参照が必要であることを示しています。これは以前に使用したことがありますが、方法を思い出せません。
ヘッダーファイルの循環参照を避けるために、C++ で前方参照/宣言を行うにはどうすればよいですか?
ヘッダー ファイルに #ifndef ガードがありますが、メモリは、この前方参照が必要であることを示しています。これは以前に使用したことがありますが、方法を思い出せません。
クラスを含めずに事前宣言します。例えば:
//#include "Foo.h" // including Foo.h causes circular reference
class Foo;
class Bar
{
...
};
あなたが話していることの正しい用語は「前方宣言」だと思います。「前方参照」は少し混乱するでしょう。
#ifndef ガードがある場合、循環ヘッダー ファイル参照は取得されません。それがポイントです。
前方参照は、ポインターまたは参照によってのみ使用するオブジェクトのヘッダー ファイルを #include(ing) しないようにするために使用されます。ただし、この場合、循環参照の問題を解決しているのではなく、適切な設計を実践し、知る必要のない詳細から .h ファイルを切り離しているだけです。