class Namespace::Class;
Warum muss ich das tun?:
namespace Namespace {
class Class;
}
Unter Verwendung von VC ++ 8.0 gibt der Compiler folgende Probleme aus:
Fehler C2653: 'Namespace': ist kein Klassen- oder Namespace-Name
Ich gehe davon aus, dass das Problem hier darin besteht, dass der Compiler nicht erkennen kann, ob Namespace
es sich um eine Klasse oder einen Namespace handelt. Aber warum ist das wichtig, da es sich nur um eine Vorwärtserklärung handelt?
Gibt es eine andere Möglichkeit, eine in einem Namespace definierte Klasse vorwärts zu deklarieren? Die obige Syntax fühlt sich so an, als würde ich den Namespace "wieder öffnen" und seine Definition erweitern. Was wäre, wenn Class
nicht tatsächlich in definiert wären Namespace
? Würde dies irgendwann zu einem Fehler führen?
A::B
der A
eine Namespace-ID anstelle eines Klassennamens steht?
Namespace
es sich um eine Klasse oder einen Namespace handelt. Kommen Sie nur nicht an den Hinweis heran, dass möglicherweise ein Sprachflammenkrieg um die Syntax beginnen könnte.