Моя проблема:
У меня два класса, класс A и B, поэтому я получил Ah и A.cpp и Bh и 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".Или, по крайней мере, я думаю, что это значение:
Ах:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
Bh:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
Это больше не работает.Что мне теперь нужно сделать, чтобы он снова работал с пространством имен и предварительным объявлением?
Оба должны быть в этом пространстве имен.Я работаю с Qt, и нужны строки "namespace ui {" и т. Д.И оба класса должны знать друг друга.Я уже пытался просто сделать это:
namespace ui{
class A;
class B;
}
в обоих заголовках, но это не работает ...
Кстати: все файлы заголовков также получили механизм "ifndef".