Bonjour,

j'ai coder une classe ou j'essaye qui doit ouvrir un fichier avec fstream :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <fstream>
using namespace std;
 
namespace libxml
{
  class xml
  {
  public:
    string XML_VAR_file;
    int XML_VAR_file_id;
    string XML_VAR_query;
    fstream XML_open_file;
 
    xml(string);
    bool XML_query(string);
    ~xml();
  };
 
  xml::xml(string XML_VAR_file)
  {
    xml::XML_VAR_file = XML_VAR_file;
    xml::XML_open_file.open(xml::XML_VAR_file, ios::ate); // LIGNE 23
  }
  bool xml::XML_query(string)
  {
 
  }
  xml::~xml()
  {
    xml::XML_open_file.close();
  }
}
Seulement, ça me renvois une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
~/Files/Programmes/Cpp/tests $ g++ libxml.cpp -o libxml
 
libxml.cpp: In constructor ‘libxml::xml::xml(std::string)’:
libxml.cpp:23: error: no matching function for call to ‘std::basic_fstream<char,
std::char_traits<char> >::open(std::string&, const std::_Ios_Openmode&)’
/usr/include/c++/4.2/fstream:778: note: candidates are: void std::basic_fstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
Si j'ai bien compris il faut que dans cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
xml::XML_open_file.open(xml::XML_VAR_file, ios::ate); // LIGNE 23
xml::XML_VAR_file soie un pointeur de constante de char ?
Seulement si je fait un transtypage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
xml::XML_open_file.open((const char*)xml::XML_VAR_file, ios::ate);
Ça m'envoie une autre erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
libxml.cpp: In constructor ‘libxml::xml::xml(std::string)’:
libxml.cpp:23: error: invalid cast from type ‘std::string’ to type ‘const char*’
Quelqu'un aurait la solution ?
Merci