CABECOUJ'ai définit une fonction amie, celle ci doit donc pouvoir accéder aux champs
privée de la classe. Ceci marche trés bien sauf quand la classe utilise la
bibliotheque standard. Des que j'écris "using namespace std" pour utiliser la
bibliotheque standard alors le compilateur ne veut plus accéder aux champs
privées, ni protégées ne la classe .
--> exemple :
//essai.h
#include <iostream.h>
#include <string>
using namespace std ;
class essai {
friend ::ostream& operator<<( ::ostream & , const essai & );
public :
essai( int para1=0 , int para2=0 , const char * para3 = "caca" )
:A(para1) , B(para2) , ch(para3) {} ;
//.....
private : //ou protected --> le problème est le même
int A ,
B ;
string ch ;
};
//essai.cpp
#include "essai.h"
::ostream & operator<<( ::ostream & os , const essai & E )
{
os << E.A << E.B << E.ch.c_str() ;
return os ;
}
--> compilateur : 'A' : cannot access private member declared in class 'essai' ===> ainsi que pour B et ch
//test_essai.cpp
#include "essai.h"
int main ( void )
{
essai E ;
cout<<E ;
return (0);
}
--> le compilateur m'écrit
...merci de me répondre, c assez pressant