Mój problem:przodu deklaracji i przestrzenie nazw (C++)
Got dwie klasy, klasy A i B, więc mam A.H i A.cpp i B.H. i B.cpp. musi wiedzieć, B i B musi wiedzieć A. Rozwiązałem to w następujący sposób (nie wiem, dlaczego to musi być tak ...)
AH:
#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"
Użyłem jednej deklaracji i działa.
Problem polega na tym, że obie klasy muszą znajdować się w przestrzeni nazw "ui". Albo przynajmniej myślę, że to jest sens:
A.H:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
B.H.:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
To już nie działa. Co muszę teraz zrobić, aby działało ponownie z przestrzenią nazw i deklaracją przekazania?
Oba muszą znajdować się w tym obszarze nazw. Pracuję z Qt i potrzebne są linie "namespace ui". Obie klasy muszą się znać. Próbowałem już tylko, aby w ten sposób:
namespace ui{
class A;
class B;
}
zarówno nagłówki, ale to nie działa ...
Btw: Wszystkie Header-Files dostał także "IFNDEF" -mechanism.
Co oznacza "To już nie działa." Proszę podać dokładne błędy kompilatora/łącznika – fredoverflow