Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction friend pas "friend" du tout!

1 réponse
Avatar
notlucky
Bonjour, je serai bref:
dans le fichier .h
class Annuaire
{
public:
...// je vous épargne les autres fonctions
friend std::ostream& operator <<(std::ostream& os, const Annuaire& unAnnuaire);

private:
std::string m_ville;
...//je vous épargne les autres attributs car ils ont le même problème
};

dans le fichier .cpp
std::ostream& operator <<(std::ostream& os, const Annuaire& unAnnuaire)
{
os << unAnnuaire.m_ville;
}

erreur de compilation: m_ville is private!

Vraiment là je sais pas quoi penser.... Une fonction friend ne devrait-elle pas avoir accès aux attributs de ma classe?
mon include .h est mis et tout compile sauf ça.

1 réponse

Avatar
pix laposte pop
notlucky wrote:

Bonjour, je serai bref:
dans le fichier .h
class Annuaire
{
public:
...// je vous épargne les autres fonctions
friend std::ostream& operator <<(std::ostream& os, const Annuaire&
unAnnuaire);

private:
std::string m_ville;
...//je vous épargne les autres attributs car ils ont le même problème
};

dans le fichier .cpp
std::ostream& operator <<(std::ostream& os, const Annuaire& unAnnuaire)
{
os << unAnnuaire.m_ville;
}

erreur de compilation: m_ville is private!

Vraiment là je sais pas quoi penser.... Une fonction friend ne
devrait-elle pas avoir accès aux attributs de ma classe?
mon include .h est mis et tout compile sauf ça.



Tu peux écrire tout simplement:


class Annuaire
{
public:

friend std::ostream& operator <<(std::ostream& os, const Annuaire&
unAnnuaire)
{
std::cout << "nville:" << unAnnuaire.m_ville;
}

private:
std::string m_ville;
};


Pour + d'info voir aussi:
http://en.wikipedia.org/wiki/Barton%E2%80%93Nackman_trick


--
pixor