我試圖幫助同事獲得編譯的東西 - 實質上,他試圖減少我們需要從一個更大的軟件系統製作的小型可執行文件的依賴關係。編譯問題 - typedefs,前向聲明,命名空間?
我不知道我能完全說明問題,因爲我不完全理解它......但我要告訴這是怎麼回事就在這裏:
圖書館答: 文件:阿
namespace CF {
typedef sometype B;
};
庫C: 文件章
//Forward declare Class
class CF::B;
Class D {
public:
B* UseB();
};
庫C: 文件C.cpp
#include "C.h"
#include "A.h"
using CF::B;
B* D::UseB()
{
return new B;
}
對不起,我知道這看起來有點瘋狂,但我試圖從集合我們實際處理的文件簡化它。
我們通常會在CF :: B上得到多重定義錯誤,或者當我們玩弄代碼並改變它時,有時在CPP文件中,它只是無法識別CF :: B的類型。
我想我的第一個問題是......我可以像我們嘗試過的那樣聲明typedef,或者有其他方法來處理B是CF命名空間中的typedef的事實,而且我們不需要希望它直接包含在Ch文件中?
標題是否有適當的包括守衛? –
是的,他們都有標準的包容衛士(#ifndef #define #endif)。 –
如何轉發從另一個文件中聲明typedef,以便在頭文件中沒有依賴項?這可能是一個好的第一步。 –