访问指向成员类的指针,该成员类存储指向另一个成员类

时间:2015-08-31 04:57:14

标签: 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()方法中时,我无法使用指针表示法访问作为Calc类成员的input对象中的weather类?

input->weather    //does not work

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

input.weather    //does not work

我错过了什么?

编辑:抱歉!我忘了提到Calc类已经是Inputs类的friend class

2 个答案:

答案 0 :(得分:3)

您已将weather定义为Inputs的私人成员,因此您的Calc对象无法看到它。您有3个选择:

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

答案 1 :(得分:0)

由于'Input'类的'weather'成员位于私有字段中,并且您尝试从Calc类''performCalc'方法访问,该方法不在Input类中。我认为上述两者都不起作用。

将'weather'变量放入Input类的公共字段或尝试下面,使用get()方法访问Input类的私有字段。

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

     return weather ;
    }
private:

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