私はクラス(X)とクラスYの2つのファイルを含むクラス(A)を持っています。残念なことにクラスYはクラスXをヘッダファイルに含める必要があります。引数としてのクラスX型へのポインタ。header guard conundrum - 既に.objの問題で定義されている
潜在的な問題は、リンカーエラーがあるということですか?クラスAにはクラスXのコピーが2つあります。使用する必要があるクラスとクラスYのクラスの2つです。これは、ヘッダーガードが役に立たない状況です。私の質問は - 純粋に構造的な問題かこれを回避する方法があるのか?
私は本当にクラスYのヘッダーファイルに何も含めたくないのですが、何かにTHATを含めたい場合は、関数プロトタイプのために必要ですか?
ヘッダファイルに非インライン関数を定義していない限り、これは問題ではありません。いくつかの代表的なコードを投稿できますか? –
実際には申し訳ありませんが、エラーはどこか別の場所から来ていたと思います。しかしそれでも、これは学ぶのは良いことです。ヘッダーファイルにプロトタイプのみが含まれている限り、何も問題なく同じ番号を含めることができます。 – SirYakalot
クラス定義は、メンバ関数の定義とともに、クラス本体自体にインライン展開されている限り、定義することができます(例:class X {int foo(){return 1; }}; '。これは問題ではありません: 'class X {int foo(); }; int X :: foo(){戻り値1; } '。 –