2012-08-08 10 views
5

मैं सी ++/ओपनजीएल में एक्लिप्स सीडीटी में एक गेम विकसित कर रहा हूं, और यह संकलित करता है और ठीक चलता है, लेकिन किसी कारण से मैं घोषणा कर रहा हूं कि एक enum (SCREEN_MAIN_MENU) रेखांकित हो जाता है लाल squiggles में और इसे हाइलाइटिंग कहते हैं प्रतीक SCREEN_MAIN_MENU हल नहीं किया जा सका। यह एक स्पष्ट झूठ है, मैं इसे ग्रहण करने के लिए ग्रहण कैसे प्राप्त करूं?ग्रहण सीडीटी सी ++ enum "हल नहीं किया जा सका"

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

उत्तर

13

यह ग्रहण CDT में एक बग की वजह से हो सकता है: सूचकांक के पुनर्निर्माण के लिए

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

कोशिश (सही परियोजना पर क्लिक करें -> सूचकांक -> पुनर्निर्माण)

+0

धन्यवाद, यह काम करता है (जूनो को अपडेट करने के बाद) –

+0

मेरी समस्या भी हल की गई। धन्यवाद! – Hei

0

आप enum के लिए एक नामित प्रकार बनाने की कोशिश की है?

यानी

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

हाँ, मैंने कोशिश की है और मैंने typedef enum {...} SCREEN_TYPE भी कोशिश की है और दोनों एक ही समस्या का कारण हैं –

+0

हालांकि यदि आप सुझाव देते हैं तो मैं करता हूं, और फिर जब मैं उपयोग करता हूं enum मैं SCREEN_YIN_MENU को SCREEN_TYPE :: SCREEN_MAIN_MENU के साथ प्रतिस्थापित करता हूं लाल squiggles गायब हो जाता है कि यह वैध C++ कोड नहीं है !? –

+0

क्या यह उस मामले में काम करता है? – Sindico