C++ 无法访问 类 之间的 public 变量
C++ Can't access public variable between classes
我一直在拼命尝试在 C++ 中的两个 类 之间共享一个 public 变量,但我似乎无法掌握它。我试过 getters 和 setters 并直接将其作为静态变量调用,但什么也没有。
这是我试过的:
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();
}
它们都被#include 在另一个主程序中 header, testApp.h.
具体问题是什么?你如何使用这些 类?
无论如何,您的 getter 代码存在几个问题。
首先,如果你使变量public为什么要使用getter?如果您要进行此设计,则应将变量隐藏为私有,以防止直接修改。
其次,如果它是一个简单的成员变量,您应该通过传递给函数的 object 来访问它:
void update(DataGrabber& grabber) {
float x = grabber.get();
}
在这种情况下,您必须在未显示的主代码中创建此 object。
如果您想改用静态变量,请查看单例模式,但我建议您不要这样做,除非没有更好的选择来解决您的具体问题。
最后,您应该在 header 文件中 #include 所有直接依赖项。您的 Particle 依赖于 DataGrabber,因此您应该从 Particle.h 中包含它的 header。或者,至少,您应该添加前向声明。
我一直在拼命尝试在 C++ 中的两个 类 之间共享一个 public 变量,但我似乎无法掌握它。我试过 getters 和 setters 并直接将其作为静态变量调用,但什么也没有。
这是我试过的:
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();
}
它们都被#include 在另一个主程序中 header, testApp.h.
具体问题是什么?你如何使用这些 类?
无论如何,您的 getter 代码存在几个问题。
首先,如果你使变量public为什么要使用getter?如果您要进行此设计,则应将变量隐藏为私有,以防止直接修改。
其次,如果它是一个简单的成员变量,您应该通过传递给函数的 object 来访问它:
void update(DataGrabber& grabber) {
float x = grabber.get();
}
在这种情况下,您必须在未显示的主代码中创建此 object。
如果您想改用静态变量,请查看单例模式,但我建议您不要这样做,除非没有更好的选择来解决您的具体问题。
最后,您应该在 header 文件中 #include 所有直接依赖项。您的 Particle 依赖于 DataGrabber,因此您应该从 Particle.h 中包含它的 header。或者,至少,您应该添加前向声明。