2012-08-08 10 views
5

Estoy desarrollando un juego en Eclipse CDT en C++/OpenGL, y se compila y funciona bien, pero por alguna razón una enumeración que estoy declarando (SCREEN_MAIN_MENU) queda subrayada en garabatos rojos y destaca que el símbolo SCREEN_MAIN_MENU no se pudo resolver. Esta es una mentira flagrante, ¿cómo logro que Eclipse lo reconozca?Eclipse CDT C++ enum "no se pudo resolver"

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(); 
    } 
} 

Respuesta

13

Esto puede ser causado por un error en Eclipse CDT:

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

tratar de reconstruir el índice (Haga clic derecho sobre el proyecto -> Índice -> Reconstruir)

+0

Gracias, eso funcionó (después de actualizar a Juno) –

+0

Resolvió mi problema también. ¡Gracias! – Hei

0

Ha intentado crear un tipo llamado así por la enumeración?

es decir

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

sí, lo he intentado y también he probado typedef enum {...} SCREEN_TYPE y ambos causan el mismo problema –

+0

, sin embargo, si hago lo que sugieres, y luego cuando uso la enumeración reemplazo SCREEN_MAIN_MENU con SCREEN_TYPE :: SCREEN_MAIN_MENU desaparecen los garabatos rojos AUNQUE NO ES UN CÓDIGO C++ VÁLIDO !? –

+0

¿funciona en ese caso? – Sindico

Cuestiones relacionadas