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

How to retain value of static variable inside a same class which has 2 implementations

本文关键字:一类 保留 变量 静态 实现      更新时间:2023-10-16

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

文件1.h:

userApp(){
    static int* foo;
}

文件1.cpp:

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

相同的类(userApp)在file2中实现,为了避免链接错误,我也被迫在file2中声明和定义静态变量。

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

我需要与 file1 中的 foo 关联的值。有什么方法可以避免在 file2 中定义静态变量吗?提前谢谢。

真是一团糟:D

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

UserApp.h 中:

class UserApp {
private:
    static int* foo_;
public:
    static int* getFoo() { return foo_; }
};

用户应用中.cpp

#include "UserApp.h"
int* UserApp::foo_ = NULL;

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

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

您尚未提供有关namespace/class充满static内容的任何详细信息,但请考虑进行更多的OO设计,或者如果将其保留在一个类中似乎是合理的,请考虑实现一个单例,这也允许您以更合理的方式保存有关其状态的信息。(你最终可能会得到这样的东西)