Je construis un programme qui a plusieurs fonctions qui ont besoin de lire les données d'un fichier. Puisque les fonctions sont assez fréquemment utilisées, l'ouverture et la fermeture du fichier pour chaque appel prendrait trop de temps, donc mon plan était de rendre l'objet FILE * global, et d'avoir le fichier ouvert pendant toute la durée du programme. Apparemment, cependant, il est impossible, puisque ceci:Création d'un objet FILE * global?
#include <fstream>
FILE * yhtit;
yhtit = fopen("thefile.txt","r");
int main() {
return 0; }
donne erreur: main.cpp|54|error: expected constructor, destructor, or type conversion before ‘=’ token|
Quelle est la meilleure façon de garder un fichier ouvert toute la durée du programme, sans avoir à passer séparément le FILE * objet à chaque fonction qui en a besoin?
SInce que vous utilisez FICHIER *, il s'agit simplement d'une question C et non d'une question C++. –
Vous devez placer votre pointeur FILE * dans une classe Singleton Logging et l'initialiser paresseusement. Effectivement se résume à avoir un objet global (singleton), mais c'est beaucoup plus soigné si vous utilisez 'Singleton' (par rapport à l'utilisation d'un' global FILE * '.) – bits
@bits: Comment une classe Singleton Logging aider avec fonctionnalité où" plusieurs fonctions ... besoin de lire les données d'un fichier "? Aussi, pourquoi un singleton est-il plus" net "qu'un global? Essayer de faire un objet" FILE * "comme un singleton semble être un abus de singleton car il est manifestement valide chose à faire pour avoir plusieurs fichiers ouverts dans un seul programme –