状況:ParticleクラスとFieldクラスがあります。パーティクルにはフィールドが関連付けられており、その逆のフィールドには多くの場合パーティクルがあります。
中#include "particle.hpp"
にいると入れませ"field.hpp"
ん。もちろん、これは理にかなっています。#include "field.hpp"
"particle.hpp"
2つのファイルのそれぞれで前方宣言を使用することにしましたが、コンパイラーは次のエラーでコンパイルに失敗します。
error: invalid use of incomplete type ‘class ElementaryParticle’
error: forward declaration of ‘class ElementaryParticle’
error: invalid use of incomplete type ‘class ElementaryField’
error: forward declaration of ‘class ElementaryField’
これらの問題を解決するための回避策はありますか?エラーが発生する理由を理解しました。お互いのファイルに含めずに両方のクラスを定義するにはどうすればよいですか?これらの問題は、フィールドがパーティクルのメンバーにアクセスしようとし、パーティクルにフィールドのベクトルが含まれているために発生します。
編集:1つの回避策は、クラスを1つのファイルの1つのクラスにマージすることです...しかし、それはばかげており、他のあらゆる種類の問題につながります。
EDIT2:ヘッダーガードについて知っています。