C++ 如何在具有2个实现的同一类中保留静态变量的值

C++ 如何在具有2个实现的同一类中保留静态变量的值,c++,static,C++,Static,我必须在返回静态值的类(比如UserApp)中调用静态函数。 类定义和声明在2个文件中完成 文件1.h: userApp(){ static int* foo; } file1.cpp: { int* userApp::foo = 0; ... . . foo = somevar; } 同一个类(userApp)在file2中实现,为了避免链接错误,我不得不在file2中声明并定义静态变量 在文件2.cpp中,当userApp::foo初

我必须在返回静态值的类(比如UserApp)中调用静态函数。 类定义和声明在2个文件中完成

文件1.h:

userApp(){

    static int* foo;
}
file1.cpp:

{
    int* userApp::foo = 0;
    ...
    .
    .

    foo = somevar;

}
同一个类(userApp)在file2中实现,为了避免链接错误,我不得不在file2中声明并定义静态变量

在文件2.cpp中,当userApp::foo初始化为0时,函数getFoo的返回值始终为零

我需要文件1中与foo关联的值。 是否有任何方法可以避免在文件2中定义静态变量? 提前谢谢。

真是一团糟

如果我理解正确,我相信您必须在其中一个文件中将静态成员声明为extern,以表明它实际上引用了在其他地方声明的变量

在UserApp.h中:

在UserApp.cpp中:

在任何其他需要使用它的地方:

#include "UserApp.h"
...
int* foo = UserApp::getFoo();

您没有提供关于<代码>命名空间<代码> >代码>类< /代码>的详细信息,该代码完全包含<代码>静态< /代码>,但是考虑做更多的面向对象设计,或者将其保持在一个类中似乎是合理的。考虑实现<强>单点< /强>,这也将允许您以更合理的方式保存有关状态的信息。(您可能会得到类似的结果)

两个文件具有相同类的声明和实现[在功能上有一些变化]。因此,静态成员变量和函数将在r8?Aw中定义,现在等待。。。您在每个文件中以不同的方式定义同一个类,并同时包含这两个文件?这是行不通的,因为这样就无法确定您引用的是哪一个foo。为每个类指定一个不同的名称,并决定何时使用class1::foo或class2::foo。如果希望它们都相同,请再次创建两个不同的类,并使其中一个的foo引用另一个的foo。如果定义一个类两次,当调用class::foo时,如何知道调用的是哪个实现?
#include "UserApp.h"

int* UserApp::foo_ = NULL;
#include "UserApp.h"
...
int* foo = UserApp::getFoo();