Я хочу реализовать свой собственный API файла ввода / вывода. Причина, по которой я хочу этого, заключается в том, что на низком уровне будет много файловых систем (жесткий диск, HTTP и некоторые другие), и мне нужно предоставить общий интерфейс для пользователя.
API выглядит примерно так:
class GIO_CORE
{
public:
GIO_CORE(void);
virtual int open(char* path, int openMode) = 0;
virtual int close() = 0;
virtual void write(char* s, int size) = 0;
virtual void read(char* s, int size) = 0;
//many more
};
Так что сейчас я использую память на жестком диске, что является самым простым. Я хочу сделать так, чтобы сохранить указатель ifstream и ofstream на текущий используемый файл. Поэтому я хочу, чтобы в функции Open использовался мой указатель ifstream или ofstream (в зависимости от OpenMode), чтобы указывать на открытый файл, а затем в функции write или read работать с этим fstream. Есть ли лучшие идеи для этого?
РЕДАКТИРОВАТЬ: ПРОБЛЕМА НИЖЕ РЕШЕНА
В любом случае я получаю ошибку компиляции при добавлении ifstream и ofstream в заголовок:
class GIO_Persistent_File_System : public GIO_CORE
{
public:
GIO_Persistent_File_System(void);
int open(char*, int);
int close();
void write(char* s, int size);
void read(char* s, int size);
ifstream infile; **this causes compilation error**
И ошибка: «отсутствует; перед идентификатором infile. Отсутствует спецификатор типа — предполагается int.
Как я могу решить это?
Не забывайте, что типы, определенные в заголовках стандартной библиотеки C ++, определены в std
Пространство имен:
std::ifstream infile;
#include <fstream>
using namespace std;
вероятно, решит вашу проблему