C++ 无法访问类之间的公共变量
C++ Can't access public variable between classes
我一直在拼命地尝试在c++中的两个类之间共享一个公共变量,但我似乎无法掌握它的窍门。我已经尝试过getter和setter,并直接调用它作为一个静态变量,但没有。
这是我尝试过的:
DataGrabber.h
#pragma once
class DataGrabber {
public:
static float temp;
void readProcess(){
temp = 1.2;
}
}
Particle.h
#pragma once
class Particle {
public:
void update() {
float x = DataGrabber::temp;
}
AND THEN THIS:
DataGrabber.h
#pragma once
class DataGrabber {
public:
float temp;
float get(){return temp;}
void readProcess(){
temp = 1.2;
}
}
Particle.h
#pragma once
class Particle {
public:
void update() {
float x = DataGrabber.get();
}
它们都被#include在另一个主标题testApp.h中
到底是什么问题?如何使用这些类?
不管怎样,你的getter代码有几个问题。
首先,如果变量是公共的,为什么还要使用getter ?如果你打算采用这种设计,你应该将变量隐藏为私有,以保护它不被直接修改。
第二,如果它是一个简单的成员变量,应该通过传递给函数的对象来访问它:void update(DataGrabber& grabber) {
float x = grabber.get();
}
在这种情况下,您必须在您的主代码中创建这个对象,您没有显示。
如果你想用一个静态变量来代替,看看单例模式,但我建议不要这样做,除非没有更好的选择来解决你的确切问题。
最后,你应该#include头文件中所有的直接依赖项。你的Particle依赖于DataGrabber,所以你应该从Particle.h中包含它的头文件。或者,至少应该添加一个前向声明。
相关文章:
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- C++ 编译时在两个变量之间交替
- 创建变量之间的运算符排列
- 计算两个uint8_t变量之间差值的最快方法是什么?
- lambda 表达式中引用捕获的 constexpr 变量和非显式捕获的 constexpr 变量之间的区别
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 类和变量之间的"ampersand operator"是什么意思?
- 函数参数和临时变量之间复制构造函数的奇怪行为
- 文字符号和字符串变量之间的串联然后返回常量字符*
- 变量之间的关系
- 单例变量和全局变量之间的差异
- 为什么堆栈中的函数局部变量之间存在内存空间
- 在C 中的三个布尔变量之间切换
- 物理寄存器和英特尔SIMD变量之间的关系
- C++无法在单独函数中的变量之间建立通信
- c和c++上下文中静态、自动、全局和局部变量之间的差异
- 如何在我存储的两个变量之间生成随机数
- 在变量之间移动队列而不复制元素
- 什么是介于2 int变量之间的mean管道运算符
- C 和 C++ 的静态变量之间的差异