C++ 解决全球问题

C++ 解决全球问题,c++,global,C++,Global,例如,我试图让对象引用一些全球化的变量(在你开始攻击我使用全局变量之前,将它们放入一个对象可能会使其他对象无法访问,或者需要向方法调用添加多余的参数) main.cpp bool firstLoop; const int dt = 10; thing.cpp void thing::Update(Object * thingToUpdate){ if( firstLoop){ ... } else{ // working with dt

例如,我试图让对象引用一些全球化的变量(在你开始攻击我使用全局变量之前,将它们放入一个对象可能会使其他对象无法访问,或者需要向方法调用添加多余的参数)

main.cpp

bool firstLoop;
const int dt = 10;
thing.cpp

void thing::Update(Object * thingToUpdate){
    if( firstLoop){
        ...
    } else{
        // working with dt
    }
}
但每次尝试访问变量时,都会出现“未声明标识符”错误
我是否需要将它们标记为extern或其他内容。

thing.cpp
中,编写

extern bool firstLoop;
请注意,同样的技巧对
dt
不起作用,因为它具有内部链接(因为它是一个内置类型的const变量)

通常,您应该有一个头文件在其中声明需要从任何地方访问的变量(使用
extern
),以及另一个定义这些变量的源文件。内置类型的常量变量应在头文件中定义,或者应通过相同的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

thing.cpp
中,编写

extern bool firstLoop;
请注意,同样的技巧对
dt
不起作用,因为它具有内部链接(因为它是一个内置类型的const变量)

通常,您应该有一个头文件在其中声明需要从任何地方访问的变量(使用
extern
),以及另一个定义这些变量的源文件。内置类型的常量变量应在头文件中定义,或者应通过相同的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

我需要将其放入使用指定变量的每个文件中吗我需要将其放入使用指定变量的每个文件中吗