我的问题:
有两个类,A类和B类,因此我有A.h和A.cpp以及B.h和B.cpp。 A需要知道B,而B需要知道A。我通过以下方式解决了这个问题(我不知道为什么必须这样做…)。
我使用了一个前向声明,它起作用了。
问题是,这两个类都需要在命名空间“ui”中。或者至少我认为这是意思:
这个不再起作用了。现在我该怎么做才能使它再次与命名空间和前向声明一起工作?
两者都必须在同一个命名空间中。我正在使用Qt,需要使用"namespace ui{"等语句。并且两个类需要相互知道。 我已经尝试过只是这样做:
在两个头文件中都有,但是这并不起作用...
顺便说一下:所有的头文件也都有“ifndef”机制。
有两个类,A类和B类,因此我有A.h和A.cpp以及B.h和B.cpp。 A需要知道B,而B需要知道A。我通过以下方式解决了这个问题(我不知道为什么必须这样做…)。
A.h:
#include "B.h"
class A{ ...
A.cpp:
#include "A.h"
B.h:
#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;
}
在两个头文件中都有,但是这并不起作用...
顺便说一下:所有的头文件也都有“ifndef”机制。