fonction friend pas "friend" du tout!
Le
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.
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.

Poser une question


Tu peux écrire tout simplement:
class Annuaire
{
public:
friend std::ostream& operator <<(std::ostream& os, const Annuaire&
unAnnuaire)
{
std::cout }
private:
std::string m_ville;
};
Pour + d'info voir aussi:
http://en.wikipedia.org/wiki/Barton...kman_trick
--
pixor