Erreur de compilation à la copie d'une référence vers std::ofstream
Salut à tous,
Quand je compile le code suivant sous Visual Studio 2005 (je n'ai pas testé avec d'autres compilos récent, mais ça compile bien avec Visual 6), ça plante :
Code:
1 2 3 4 5 6 7 8
| #include <fstream>
std::ofstream& out = std::ofstream ();
void test (std::ofstream& in)
{
out = in;
} |
Voici l'erreur renvoyée :
Citation:
c:\program files\microsoft visual studio 8\vc\include\ostream(581) : error C2249: 'std::basic_ios<_Elem,_Traits>::operator =' : aucun chemin accessible vers private membre déclaré(e) dans 'std::basic_ios<_Elem,_Traits>' de base virtuelle
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\program files\microsoft visual studio 8\vc\include\ios(152) : voir la déclaration de 'std::basic_ios<_Elem,_Traits>::operator ='
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Le diagnostic s'est produit dans la fonction 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator =(const std::basic_ostream<_Elem,_Traits> &)' générée par le compilateur
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\program files\microsoft visual studio 8\vc\include\fstream(548) : error C2248: 'std::basic_streambuf<_Elem,_Traits>::operator =' : impossible d'accéder à private membre déclaré(e) dans la classe 'std::basic_streambuf<_Elem,_Traits>'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\program files\microsoft visual studio 8\vc\include\streambuf(23) : voir la déclaration de 'std::basic_streambuf<_Elem,_Traits>::operator ='
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Le diagnostic s'est produit dans la fonction 'std::basic_filebuf<_Elem,_Traits> &std::basic_filebuf<_Elem,_Traits>::operator =(const std::basic_filebuf<_Elem,_Traits> &)' générée par le compilateur
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Pourtant si je fais ça, ça marche. Vous avez une idée du pourquoi ? Merci !
Code:
1 2 3 4 5 6 7 8
| #include <fstream>
//std::ofstream& out = std::ofstream ();
void test (std::ofstream& in)
{
std::ofstream& out = in;
} |