我的问题:
有两个班,A班和B班,所以我得到了Ah和A.cpp以及Bh和B.cpp.需要知道B和B需要知道A.我用以下方式解决了它(我不知道为什么它必须如此......)
啊:
#include "B.h"
class A{ ...
Run Code Online (Sandbox Code Playgroud)
A.cpp:
#include "A.h"
Run Code Online (Sandbox Code Playgroud)
BH:
#include "A.h"
class A; // forward declaration
class B { ...
Run Code Online (Sandbox Code Playgroud)
B.cpp:
#include "B.h"
Run Code Online (Sandbox Code Playgroud)
我使用了一个前向声明并且它有效.
问题是,两个类都需要在命名空间"ui"中.或者至少我认为这是意思:
啊:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
Run Code Online (Sandbox Code Playgroud)
BH:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
Run Code Online (Sandbox Code Playgroud)
这不再起作用了.现在我需要做些什么来使命名空间和前向声明再次起作用?
两者都必须在此命名空间中.我正在使用Qt,需要使用"namespace ui {"等行.两个班级都需要相互了解.我已经尝试过这样做:
namespace ui{
class A;
class B;
}
Run Code Online (Sandbox Code Playgroud)
在两个标题中,但这不起作用......
顺便说一句:所有Header-Files也获得了"ifndef"机制.