我有一个类指向数据存储成员类(输入):
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
。
答案 0 :(得分:3)
您已将weather
定义为Inputs
的私人成员,因此您的Calc
对象无法看到它。您有3个选择:
weather
。 Calc
成为Inputs
的朋友。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;
}