我一直在拼命想要在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;
}
然后这个:
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();
}
它们在另一个主标题testApp.h中都是#include。
答案 0 :(得分:2)
确切的问题是什么?你如何使用这些类?
无论如何,您的getter代码存在一些问题。
首先,如果将变量公开,为什么要使用getter?如果您要进行此设计,则应将变量隐藏为私有,以防止其直接修改。
其次,如果它是一个简单的成员变量,你应该通过传递给你的函数的对象来访问它:
void update(DataGrabber& grabber) {
float x = grabber.get();
}
在这种情况下,您必须在主代码中创建此对象,而该代码尚未显示。
如果你想使用一个静态变量,请看一下Singleton模式,但我会反对它,除非没有更好的选项来解决你的确切问题。
最后,您应该#include头文件中的所有直接依赖项。你的粒子依赖于DataGrabber,所以你应该在Particle.h中包含它的头。或者,至少,你应该添加一个前向声明。