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

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()方法中时,无法使用指针表示法访问属于Calc类的成员的input对象中的天气类吗?
input->weather    //does not work

点符号也不起作用(我不认为这会起作用,因为没有链接通过引用传递给此处)。
input.weather    //does not work

我想念什么?

编辑:对不起!我忘了提到Calc类已经是Inputs类的friend class了。

最佳答案

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

  • 公开weather
  • 使Calc成为Inputs的 friend 。
  • weather创建一个 setter/getter 方法(推荐使用,因为它可以改善封装性)
  • 关于c++ - 访问指向存储另一个成员类的指针的成员类的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32304225/

    10-12 14:55