2015-12-16 4 views
0

Il veut tout simplement pas acces champs privésami opérateur ostream << acces wont champs privés

.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<<")"; 
} 

error: 'std::string Piekarnik::model' is private

+0

Vérifiez votre déclaration et la signature de la définition, il ne correspond. Voici le 'ami déclaré std :: ostream & opérateur << (std :: ostream & os, const Ciasto & ciasto);' – Danh

Répondre

0

Changer votre déclaration d'ami à

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

travaillé! juste une classe de plus et le même problème, va essayer de le faire par moi-même – foxale

+0

erreur: 'unsigned int Program :: temperatura' est privé | son dans un autre programme de classe, que dois-je taper là pour le faire fonctionner parfaitement? – foxale

+0

Utiliser un getter dans la classe 'Program' ou mettre la même déclaration d'ami à la classe' Program' ou simplement marquer le membre public – Danh