それらが構築される順序についての保証はありません。
グローバルを使用しないようにするだけでなく、この依存関係を排除することが最善の選択です。ただし、必要に応じて、いずれかを確実に実行したい場合は、ポインターとポインターを返す関数を使用することをお勧めします。
independent * pindependent = null;
dependent * pdependent = null;
independent * getIndependent()
{
if(pindependent == null)
pindependent = new independent(); // fixed the bug pointed to by the Mooing Duck
return pindependent;
}
dependent * getDependent()
{
if(pdependent == null)
{
getIndependent();
pdependent = new dependent(); // fixed the bug pointed to by the Mooing Duck
}
return pdependent;
}
ヘッダー ファイルでは、関数を公開できます (オプションで extern を使用)。
extern independent * getIndependent();
extern dependent * getDependent();