2012-02-02 73 views
2

我想讓對象引用一些全局變量(在開始使用全局變量將它們放入對象之前將使它無法被其他對象訪問,或者需要向方法調用中添加多餘的參數)例如解析爲全局

的main.cpp

bool firstLoop; 
const int dt = 10; 

thing.cpp

void thing::Update(Object * thingToUpdate){ 
    if(firstLoop){ 
     ... 
    } else{ 
     // working with dt 
    } 
} 

但每次我嘗試訪問的變量時,我得到「U的錯誤ndeclared標識符「 我需要將它們標記爲extern或其他東西嗎?

回答

4

thing.cpp,寫

extern bool firstLoop; 

注意,同樣的伎倆不會爲dt工作,因爲它具有內部聯動(因爲它是一個常量可變內置型) 。

通常情況下,你應該有一個頭文件,你聲明(與extern)的變量需要來自世界各地的訪問,並定義這些變量的另一個源文件。內置類型的常量變量應該在頭文件中定義,或者應該明確地使它們的鏈接外部藉助於同一個關鍵字extern關鍵字。然後,頭文件應該包含在需要訪問的地方。例如:

//Globals.h 

extern char ec; 
extern const char ecc; 
const char cc = 'a'; 

//Globals.cpp 
char ec /* = 'b'*/; 
extern const char ecc = 'b'; 
//no need to do anything with cc 
+0

我需要把它放到每個使用指定變量的文件中 – gardian06 2012-02-02 13:56:59

+0

@ gardian06:是的,你這樣做。查看我的更新 – 2012-02-02 14:03:04