我的問題:向前聲明和命名空間(C++)
有兩個類,類A和B,所以我就A.H和A.cpp和B.h和B.cpp。 A需要知道B和B需要知道A.我解決它通過以下方式(我不知道爲什麼要這樣......)
啊:
#include "B.h"
class A{ ...
A. CPP:
#include "A.h"
了Bh:
#include "A.h"
class A; // forward declaration
class B { ...
B.cpp:
#include "B.h"
我使用了一個前向聲明,它的工作原理。
問題是,這兩個類都需要位於命名空間「ui」中。或者至少我覺得這個意思:
A.H:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
B.h:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
這不工作了。我現在必須做些什麼才能使它再次與名稱空間和前向聲明一起工作?
兩者都必須位於此名稱空間中。我正在使用Qt,並且需要使用「namespace ui {」等。兩個班都需要彼此瞭解。 我已經嘗試只是爲了讓這樣的:
namespace ui{
class A;
class B;
}
兩個頭
,但這並不工作...
BTW:所有頁眉文件也得到了「IFNDEF」 -mechanism。
什麼是「這不起作用了嗎?」是什麼意思?請發佈確切的編譯器/鏈接器錯誤 – fredoverflow