Как реализовать мой собственный API файлов IO в переполнении стека

Я хочу реализовать свой собственный 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.

Как я могу решить это?

2

Решение

Не забывайте, что типы, определенные в заголовках стандартной библиотеки C ++, определены в std Пространство имен:

std::ifstream infile;
1

Другие решения

#include <fstream>
using namespace std;

вероятно, решит вашу проблему

-2

По вопросам рекламы [email protected]