Я создаю программу, которая имеет несколько функций, которые должны читать данные из файла. Поскольку функции используются довольно часто, открытие и закрытие файла для каждого вызова будет слишком трудоемким, поэтому мой план состоял в том, чтобы сделать объект FILE * глобальным и открыть файл всей продолжительности программы. По-видимому, хотя, это не представляется возможным, так как это:Создание глобального объекта FILE *?
#include <fstream>
FILE * yhtit;
yhtit = fopen("thefile.txt","r");
int main() {
return 0; }
дает ошибку: main.cpp|54|error: expected constructor, destructor, or type conversion before ‘=’ token|
Что лучший способ сохранить файл открыть всю продолжительность программы, без необходимости раздельной передачи FILE * объект для каждой функции, которая в ней нуждается?
С помощью этого файла вы используете FILE *, это действительно вопрос C, а не вопрос на C++. –
Вы должны перенести указатель FILE * в класс Singleton Logging и сделать его лениво инициализированным. Эффективно сводится к наличию глобального (singleton) объекта, но его гораздо более аккуратный, если вы используете 'Singleton' (по сравнению с использованием' global FILE * '. – bits
@bits: как класс Singleton Logging помогает с функциональностью, где" несколько функций ... нужно читать данные из файла »? Кроме того, почему одноэлемент« более аккуратный », чем глобальный? Пытаясь сделать объект, похожий на FILE *, синглтон кажется злоупотреблением синглом, так как это явно что нужно делать, чтобы иметь возможность открывать несколько файлов в одной программе. –