我試圖解決以下這個結構我已經取得了一些文件涉及到循環依賴的問題:與循環依賴問題
啊
#include "B.h"
#include "C.h"
#include "D.h"
namespace NS {
class B;
class C;
class D;
class A {
/* ... */
A(const A& a) {};
A(const B& a) {};
A(const C& a) {};
A(const D& a) {};
/* ... */
};
}; // NS END
了Bh
#include "A.h"
#include "C.h"
#include "D.h"
namespace NS {
class A;
class C;
class D;
class B {
/* ... */
B(const B& a) {};
B(const A& a) {};
B(const C& a) {};
B(const D& a) {};
/* ... */
};
}; // NS END
章
#include "A.h"
#include "B.h"
#include "D.h"
namespace NS {
class A;
class B;
class D;
class C {
/* ... */
C(const C& a) {};
C(const A& a) {};
C(const B& a) {};
C(const D& a) {};
/* ... */
};
}; // NS END
迪拉姆
#include "A.h"
#include "B.h"
#include "C.h"
namespace NS {
class A;
class B;
class C;
class D {
/* ... */
D(const D& a) {};
D(const A& a) {};
D(const B& a) {};
D(const C& a) {};
/* ... */
};
}; // NS END
無論我試試我有采取在其他文件參數類,甚至把申報領先的建設者一些錯誤,好像它把它宣佈爲聲明和定義,而忽略了真正的定義這是在另一個文件中。我怎麼能解決這個問題?
注:我在每個文件中定義後衛,只是我沒有把它放在這裏
我沒有看到任何包括警衛。請顯示一些真實的代碼。 – 2012-03-23 10:56:56
你爲什麼要轉發聲明類*和*包含頭文件? – 2012-03-23 10:57:07
我沒有把後衛化妝較短這裏,但在所有的文件,真正的代碼不與任何貢獻這裏,只能使凌亂,方案是一樣的 – 2012-03-23 11:07:01