Namespaces und Forward Declaration
-
Hi,
hab mal einfache Frage, auf die mir die Suche keine Antwort gegeben hat.
Wie schreibt man Vorwärtsdeklarationen mit Namensraum?Wenn ich folgendes schreibe, dann schimpft mein MSVC8.0.
class MySpace::MyClass; // Fehler: 'MySpace' : is not a class or namespace name
Gibt's dann sonst noch irgendwas zu beachten?
Grüße,
don_basto.
-
namespace MySpace { class MyClass; // ok //class MyClass::InnerClass; // geht generell nicht }
-
finix schrieb:
//class MyClass::InnerClass; // geht generell nicht
Ok, abermerkwürdig. In meinem alten Quellkode stand das so drin und lies irgendwie auch Kompilieren.
-
don_basto schrieb:
finix schrieb:
//class MyClass::InnerClass; // geht generell nicht
Ok, abermerkwürdig. In meinem alten Quellkode stand das so drin und lies irgendwie auch Kompilieren.
Sicher? Hast du den Code noch?
-
Ja, der alte Kode lässt sich kompilieren, erst als ich ihn in ein neues Projekt gesteckt hatte, kam der Fehler. Und der Fehler kam nur in der Headerdatei, die ich wirklich einsetzte. In einem anderen Header, der zwar zum Projekt gehört, aber nicht verwendet wird, darf weiter so bleiben ..
-
Forwärtsdeklarationen dürfen nur in dem Namensraum stehen, so wie du es oben geschrieben hast ist es kein ISO-C++. Dass dein Compiler das durchgehen lässt ist durchaus möglich, aber dem Standard entspricht es eben nicht.