Bonjour, j'ai un probleme de manipulation de stream.
Voilà une partie du code :

Pour le header (Driver.hh) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
g++ -c -std=c++11 Driver.cc
Et la première (mais pas la dernière !!) erreur du compilateur me dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !)