unbekanter Typ bei nested struct
-
Hi,
ich habe eine Klasse Screen, welche wunderbar funktioniert.Nun habe ich allerdings in einer anderen Klasse, System folgendes Konstukt:
class System { private: enum PendingScreenOperationType {Add, Remove, Reposition}; struct PendingScreenOperation { public: Screen* Screen; PendingScreenOperationType Type; PendingScreenOperation(Screen* screen, PendingScreenOperationType type); ~PendingScreenOperation(); }; ... };Dies kompiliert im dev-c++ wunderbar, im Microsoft Visual Studio 2005 Express edition bekomme ich jedoch folgende Fehlermeldung:
system.hpp(50) : error C2327: 'System::PendingScreenOperation::Screen' : is not a type name, static, or enumeratorDurch folgende Änderung kann ich das Problem beheben:
class System { private: enum PendingScreenOperationType {Add, Remove, Reposition}; struct PendingScreenOperation { public: ::Screen* Screen; PendingScreenOperationType Type; PendingScreenOperation(::Screen* screen, PendingScreenOperationType type); ~PendingScreenOperation(); }; ... };Jetzt komiliert es in beiden IDEs.. Wenn ich jedoch nur einmal den :: setze, dann kompiliert es im Dev-c++ nicht.
(die Fehlermeldung lautet:
System.hpp:48: error: declaration of `Screen*System::PendingScreenOperation::Screen' Screen.hpp:31: error: changes meaning of `Screen' from `class Screen')
Woran liegt dies? Warum muss ich hier den :: setzen? Oder liegt der Fehler woanders?
Ich bin für jeden Hinweis dankbar, MfG Niko
-
Oh mein Gott ich seh den Wald vor lauter Bäumen nicht, das liegt natürlich daran, dass ich da ein Feld mit dem Namen Screen deklariert habe.
Ihr dürft mich alle auslachen, trotzdem Danke! Niko
-
Screen* Screen;hiermit deklarierst du ein member Screen, dass in folge den typ Screen verdeckt. ist das ein tippfehler, oder gewollt?