c++ - 访问指向存储指向另一个成员类的指针的成员类的指针

标签 c++ pointers

我有一个指向数据存储成员类(输入)的类:

class Calc
{
public:
    Calc(Inputs *input) : input(input) {}
    void performCalc();
private:
    Inputs *input;
};

在 Inputs 类中,我存储各种数据输入:

class Inputs
{
public:
    Inputs(std::string &directory, LogFile &log);
    ~Inputs();

private:

    WriteLogFile &writeToLog;
    WeatherData *weather;
    EvaporationData *evaporation;

friend class Calc;

}

现在,当我在 performCalc() 方法中时,我无法访问 inputs 对象中的天气类,它是使用指针表示法的 Calc 类的成员?

input->weather    //does not work

点符号也不起作用(我不认为它会起作用,因为这里没有通过引用传递链接。)

input.weather    //does not work

我错过了什么?

编辑:抱歉!我忘了提及 Calc 类已经是 Inputs 类的 友元类

最佳答案

您已将 weather 定义为 Inputs 的私有(private)成员,因此它对您的 Calc 对象不可见。您有 3 个选择:

  1. 公开天气
  2. Calc 成为 Inputs 的 friend 。
  3. weather 创建一个 getter 方法(推荐,因为它改进了封装)

关于c++ - 访问指向存储指向另一个成员类的指针的成员类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32304225/

相关文章:

java - 如何用给定的R,G,B在java中显示图片

c++ - 使用小数组制作长 vector (列矩阵)

c++ - 在 C++ 中验证指向指针的指针

C++删除二维指针 vector

c++ - 有没有办法停止隐式指针转换为 void *

c++ - x265编码器,将yuv转为x265_picture

c++ - 如何定义模板类的模板

c++ - 通过在 C++ 中删除 vector 中的 vector 来释放内存

c++ - 指向 void 函数中的类的指针

c++ - 在 DMA 之后反向更改为 int