(Kein MFC) Falsche Namespace-Elemente werden angezeigt.
-
Hallo.
Ich habe Probleme, die, wie ich glaube, mit dem MS Compiler zusammenhängen.
Ich habe die Version 6.0 und die Professional Edition.
Kennt man jaGut, also ich habe eien Header-Datei mit den Namespace-Elementen die man von außen zu verwenden darf und kann und eine C++-Datei mit den internen Variablen und den Funktionsimplementierungen, sowie den internen Funktionen.
Die Zugriffe sind exakt vergeben, man kann nur auf die Funktionen zugreifen die im Header angegeben sind (bei Namespaces muss man etwas anders organisieren als bei Klassen).
Jedenfalls wird aber immer, wenn ich in einer anderen C++-Datei, die den Header natürlich inkludiert hat, auf mein Namespace via Bereichsoperator (::) zugreifen will, eine Liste aller internen Elemente gezeigt.
Das sind natürlich diejenigen, die in der C++-Datei definiert sind, aber ich möchte gerne die aus der Header-Datei ansehen.Der Namespace ist richtig aufgebaut und auf die Variablen und internen Funktionen hätte sowieso niemand Zugriff, aber ich finde es dennoch schlecht.
Hat jemand eine Idee, wie ich das Problem beheben kann?
MfG MAV
-
Also den part mit den Namespace verstehe ich nicht. Drück es mal in Quelltext aus.
Zugriffe regelt man auch nicht mit Namespaces
!
Erkläre es bitte noch mal ggf. mit etwas Beispielsource
-
Gut.
Ich gebe mal ein einfaches Beispiel:
NAMESPACE.h
namespace NS { void func1(); void func2(); int var1(); int var2(); };
NAMESPACE.cpp
#include "NAMESPACE.h" namespace NS { int var3; int var4; void func3(); void func4(); }; void NS::func1() { [...] } void NS::func2() { [...] } void NS::func3() { [...] } void NS::func4() { [...] }
TEST.cpp
#include "NAMESPACE.h" int main() { NS:: }
So und bevor man dann weiterschreibt, kommt, wenn man NS::, schreibt eine Liste aller internen Elemente.
Angezeigt werden:
var3
var4
func3
func4Das sind aber die Elemente die in der C++-Datei stehen.
Darauf hat außer der C++-Datei selbst niemand Zugriff.
Angezeigt werden müssten die Elemente in der Header-Datei auf die man Zugriff hat:var1
var2
func1
func2MfG MAV
-
Hallo Michael. Wie geht es dir. Wir haben schon lange nichts mehr voneinander gehört, gelle?
-
LÖL
Eine Antwort auf mein Problem, wäre besser!
-
öhm?
Du deklarierst deinen NameSpace ja zweimal! Sowas is böse, böse! Versuch das mal zu kompilieren ...
-
Das ist schon ok so!
Bei Namespaces ist das erlaubt.
Aber ich nutze jetzt sowieso keine mehr!
Ich nutze jetzt statische Klasseninstanzen, oder sowas ^^
Das ist guT!