2012-08-08 9 views
5

Ich entwickle ein Spiel in Eclipse CDT in C++/OpenGL, und es kompiliert und läuft gut, aber aus irgendeinem Grund wird eine Enumeration, die ich deklariere (SCREEN_MAIN_MENU) unterstrichen in roten Schnörkeln und Hervorhebung sagt es Symbol SCREEN_MAIN_MENU konnte nicht gelöst werden. Das ist eine offensichtliche Lüge, wie kann ich Eclipse dazu bringen, es zu erkennen?Eclipse CDT C++ Enum "konnte nicht aufgelöst werden"

Screens.h:

#ifndef SCREENS_H 
#define SCREENS_H 

enum { 
SCREEN_MAIN_MENU, 
SCREEN_LOADING, 
SCREEN_GAME 
}; 

class Screen{ 
public: 
    static void change(int screen); 
    static void render(); 
}; 

#endif 

Screens.cpp:

#include "screens.h" 
#include "gui.h" 
#include "global.h" 

extern Global global; 

void Screen::change(int screen){ 
    global.screen = screen; 
} 

void Screen::render(){ 
if(global.screen == SCREEN_MAIN_MENU){ //HERE ARE THE RED SQUIGGLES!!!?? 
    global.text_renderer.print("Sidona", global.screen_width/2-40, 
    global.screen_height-25); 
    Gui::render(); 
    } 
} 

Antwort

13

Dies kann durch einen Fehler in Eclipse CDT verursacht werden:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=356057

Versuchen Sie, den Index neu zu erstellen (rechts auf das Projekt klicken -> Übersicht -> Rebuild) ja

+0

Danke, das (nach dem Update auf Juno) arbeitete –

+0

auch mein Problem gelöst. Vielen Dank! – Hei

0

Haben Sie versucht, einen benannten Typ für die Enum zu schaffen?

dh

enum SCREEN_TYPE { SCREEN_MAIN_MENU, SCREEN_LOADING, SCREEN_GAME }; 
+0

, ich habe das versucht, und ich habe auch versucht typedef enum {...} SCREEN_TYPE und verursachen beide das gleiche Problem –

+0

aber wenn ich tun, wie Sie vorschlagen, und dann, wenn ich die Enum-i SCREEN_MAIN_MENU mit SCREEN_TYPE :: SCREEN_MAIN_MENU den roten Kringeln ersetzen verschwinden OBWOHL, die nicht gültig C++ CODE !? –

+0

funktioniert es in diesem Fall? – Sindico

Verwandte Themen