Problem mit Klassennamen in einem Enum
-
Hallo,
ich habe mir ein enum von Klassennamen gemacht:
enum Classes { TestClass };Ich habe auch eine Klasse mit dem selben Namen.
class TestClass { TestClass(void); ~TestClass(void); }Jetzt gibt es Probleme bei der Benutzung der Klasse.
TestClass* t;Hier wird TestClass für den enum-Wert gehalten.
Mir ist nicht klar warum.Grüße
Stephan
-
Die Erklärung ist, dass Abschnitt 9.1.2 im Standard klipp und klar sagt, dass Klassennamen unterliegen, wenn es im gleichen Scope den gleichen Namen für Funktionen, Variablen oder enums gibt und dann nur noch mittels elaborated type specifiers angesprochen werden können.
-
Ja, der durch enum eingeführte Name ist auch ausserhalb der enum-Deklaration sichtbar, insofern wahrscheinlich normal dass der Compiler durcheinanderkommt.
Falls du eine C++11-Implementierung hast, veruch's mal mit "Scoped enum":enum class Classes { TestClass };dann musst Du allerdings auch immer vollständig Classes::TestClass schreiben wenn Du den enum-Wert meinst.
-
Ok danke, ich habe das enum jetzt einfach in einen eigenen namespace verfrachtet.