Mon problème:déclaration avant et namespaces (C++)
obtenu deux classes, la classe A et B, alors je suis A.h et A.cpp et B.h et B.cpp. A besoin de savoir B et B a besoin de savoir A. Je l'ai résolu de la manière suivante (je ne sais pas pourquoi il doit être si ...)
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"
J'utilise une déclaration avant et cela fonctionne.
Le problème est que les deux classes doivent être dans l'espace de noms "ui". Ou du moins je pense que c'est le sens:
A.h:
#include "B.h"
namespace ui{
class A;
}
class A{ ...
B.h:
#include "A.h"
namespace ui{
class B;
}
class B{ ...
Cela ne fonctionne plus. Que dois-je faire maintenant pour le faire fonctionner à nouveau avec l'espace de noms et la déclaration directe?
Les deux doivent être dans cet espace de noms. Je travaille avec Qt et les lignes "namespace ui {" etc. sont nécessaires. Et les deux classes ont besoin de se connaître. je l'ai déjà essayé juste pour faire ceci:
namespace ui{
class A;
class B;
}
dans les deux têtes, mais cela ne fonctionne pas ...
BTW: Tous les en-tête-Files a également obtenu le « ifndef » -Mécanisme.
Qu'est-ce que "Cela ne fonctionne plus." Signifie? S'il vous plaît signaler les erreurs exactes de compilateur/éditeur de liens – fredoverflow