‘std::ofstream’ has no member named ‘swap’ en C++11 ?
Bonjour, j'ai un probleme de manipulation de stream.
Voilà une partie du code :
Pour le header (Driver.hh) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
class Driver{
//Plein de trucs....
// dont
void setFileIn(const std::string& filein); // Fait ce qu'elle doit faire pour le fichier de données.
//.....
public :
std::string fileoutname;
std::ostream& outstream = std::cout;
Driver(const std::string& filein="",const std::string& fileout="");
}; |
Pour l'implementation (Driver.cc)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include"Driver.hh"
//plein de trucs...
//......
Driver::Driver(const std::string& filein/*=""*/, const std::string& fileout/*=""*/)
{
if(!filein.empty())
{setFileIn(filein);}
if(!fileout.empty())
{
std::ofstream tmp (fileout.c_str());
tmp.swap(outstream);
}
} |
Je compile bien avec le standard C++11 justement pour swap :
Code:
1 2
|
g++ -c -std=c++11 Driver.cc |
Et la première (mais pas la dernière !!) erreur du compilateur me dit :
Code:
1 2 3 4 5
|
In constructor Driver::Driver(const string&, const string&):
Driver.cc:64:11: error: std::ofstream has no member named swap
tmp.swap(outstream);
^ |
Pourtant ici on me dit le contraire...
Une idée ? (sur ce problème... ou sur une autre facon de faire, je suis preneur !)