4

ヘッダーファイルの循環参照を避けるために、C++ で前方参照/宣言を行うにはどうすればよいですか?

ヘッダー ファイルに #ifndef ガードがありますが、メモリは、この前方参照が必要であることを示しています。これは以前に使用したことがありますが、方法を思い出せません。

4

3 に答える 3

15

クラスを含めずに事前宣言します。例えば:

//#include "Foo.h" // including Foo.h causes circular reference
class Foo;

class Bar
{
...
};
于 2008-10-08T17:32:04.287 に答える
1

あなたが話していることの正しい用語は「前方宣言」だと思います。「前方参照」は少し混乱するでしょう。

于 2008-10-08T22:45:32.733 に答える
-2

#ifndef ガードがある場合、循環ヘッダー ファイル参照は取得されません。それがポイントです。

前方参照は、ポインターまたは参照によってのみ使用するオブジェクトのヘッダー ファイルを #include(ing) しないようにするために使用されます。ただし、この場合、循環参照の問題を解決しているのではなく、適切な設計を実践し、知る必要のない詳細から .h ファイルを切り離しているだけです。

于 2008-10-08T17:33:19.743 に答える