2012-02-02 54 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