朋友ostream运算符<<不会访问私人领域

时间:2015-12-16 00:14:09

标签: private operator-keyword friend ostream

它不会访问私有字段

.hpp:
private:
    std::string model;

public:
    Piekarnik &operator << (const Ciasto &ciasto);
    friend std::ostream &operator<<(std::ostream &os, const Ciasto &ciasto);


.cpp:
Piekarnik &Piekarnik::operator<<(const Ciasto &ciasto)
{
    append(ciasto);
    return *this;
}
ostream &operator<<(ostream &os, const Piekarnik &piekarnik) // dwuargumentowy;
{
      os<<"Piekarnik (model: "<<piekarnik.model<<", temperatura: " << piekarnik.obecnyProgram.temperatura <<", pieczenie: " << EnumToString(piekarnik.obecnyProgram.pieczenie) << ", wlozone ciasto: " << EnumToString(piekarnik.wlozoneCiasto.rodzaj);
      return os<<")";
}
  

错误:'std :: string Piekarnik :: model'是私有的

1 个答案:

答案 0 :(得分:0)

将您的朋友声明更改为

friend std::ostream &operator<<(std::ostream &os, const Piekarnik&);