Je développe un programme en c++ avec beaucoup d'opérations d'E/S de fichier. J'ai défini un ofstream statique dans un en-tête commun afin qu'il soit accessible partout dans le projet. La structure des codes est énumérée comme suit: toutes les variables communes sont définies dans com.h, test.h et test.cpp sont pour une classe appelée OPClass, main.cpp exécute le programme principal
COM.H:
#ifndef __CLCOM__
#define __CLCOM__
#include
#include
#include
using namespace std;
static ofstream out;
static stringstream ss;
#endif
TEST.H:
#ifndef __CL__
#define __CL__
#include
#include
#include "com.h"
using namespace std;
class OPClass
{
public:
void run(void);
void show(ostream &o) const;
};
#endif
TEST.CPP:
#include "com.h"
#include "test.h"
void OPClass::run(void)
{
out << "Here is run()" << endl;
show(out);
}
void OPClass::show(ostream &o) const
{
o << "bonjour!" << endl;
}
MAIN.CPP:
#include "com.h"
#include "test.h"
void runmain(void)
{
OPClass op;
out.open("output.txt", ios::out | ios::trunc);
out << endl << "L'état a changé!" << endl;
op.run();
if (out.is_open()) out.close();
}
int main(int argc, char* argv[])
{
runmain();
return 0;
}
Comme vous pouvez le constater, l'ofstream statique a été nommé out et sera appelé dans le programme principal et dans la classe. J'utilise mingw32 et je n'ai pas vu de problème lors de la compilation ou à l'exécution. Mais il semble que seule l'information dans runmain() sera écrite dans le fichier de sortie. Tout autre message écrit dans ce fichier dans la classe n'apparaît jamais dans le fichier de sortie. Pourquoi et comment puis-je écrire un flux de fichier commun pour que tout le monde dans le projet puisse y accéder? Merci.