C++ 无法访问类之间的公共变量

C++ Can't access public variable between classes

本文关键字:变量 之间 访问 C++      更新时间:2023-10-16

我一直在拼命地尝试在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中包含它的头文件。或者,至少应该添加一个前向声明。