-6

私は現在、多くのクラスを含むプロジェクトに取り組んでおり、次のようなものを含める必要がある場合があります:

Player.h の CSConnection.h と CSConnection.h の Player.h で、コンパイラがクラス名が定義されていないなどの競合を起こしました。

ヘッダーにはガードがありましたが、どこに問題がありますか?

4

3 に答える 3

1

循環依存は単に悪い設計です。子/所有オブジェクトにその親/所有者を「認識」させたい場合は、所有者への完全な参照ではなく、子に std::function を渡す必要があります。

于 2013-10-18T20:51:09.853 に答える
0

前方宣言 - http://en.wikipedia.org/wiki/Forward_declarationを参照 するか、おそらくガード「つまり #ifdef ...」の使用 - http://en.wikipedia.org/wiki/Include_guard

于 2013-10-18T20:52:06.617 に答える
-1

インクルード ガードは、ファイルが同じファイル内に複数回インクルードされるのを防ぎますが、循環的なインクルードには役立ちません。おそらく必要なのは前方宣言ですが、それはインクルードファイルの内容によって異なります。

于 2013-10-18T20:51:30.867 に答える