如何在具有 2 个实现的同一类中保留静态变量的值
How to retain value of static variable inside a same class which has 2 implementations
我必须在返回静态值的类(例如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设计,或者如果将其保留在一个类中似乎是合理的,请考虑实现一个单例,这也允许您以更合理的方式保存有关其状态的信息。(你最终可能会得到这样的东西)
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- 为多个会话保留XPtr
- 如何创建从同一类继承的不同对象的向量
- 保留对其他类的成员函数的引用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- C++如何将同一类的实例作为属性
- 指针保留字符串
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 如何让 GCC/Clang 在保留标识符上出错
- 必须为 C++20 协程帧保留多少内存?
- 如何将一个窗口保留在另一个应用程序窗口的前面
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 局部变量保留函数中的值
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 保留函数指针模板参数
- 变量超出范围后如何保留向量值?
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- 如何为同一类对象的成员函数保留单独的变量副本?
- 如何在具有 2 个实现的同一类中保留静态变量的值