2012-08-08 63 views
5

我正在C++/OpenGL中開發Eclipse CDT中的遊戲,它編譯並運行得很好,但由於某種原因,我聲明的一個枚舉(SCREEN_MAIN_MENU)被加下劃線在紅色的曲折中,並突出顯示符號SCREEN_MAIN_MENU無法解析。這是一個公然的謊言,我如何讓Eclipse識別它?Eclipse CDT C++枚舉「無法解決」

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

這可以通過在Eclipse CDT的錯誤造成的:

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

嘗試重建索引(右鍵單擊項目 - >首頁 - >重建)

+0

謝謝,這工作(更新到朱諾後) – 2012-10-15 13:02:23

+0

也解決了我的問題。謝謝! – Hei 2014-02-02 03:26:06

0

您是否嘗試過創建枚舉命名類型?

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

是的,我已經嘗試過,我也試過typedef枚舉{...} SCREEN_TYPE和都導致相同的問題 – 2012-08-08 15:42:47

+0

然而,如果我按照你的建議,然後當我使用該枚舉我用SCREEN_TYPE :: SCREEN_MAIN_MENU SCREEN_MAIN_MENU取代紅色波浪消失即使這是不是有效的C++代碼!? – 2012-08-08 15:47:27

+0

它在這種情況下工作嗎? – Sindico 2012-08-08 17:14:08