Можно ли переопределить методы ifstream :: read, ifstream :: open, не производя дочерний класс от ifstream ??если можно как? - PullRequest
0 голосов
/ 18 декабря 2018
std::ifstream in;
in.**open**("file path",std::ifstream::in );
in.**read**((char *)&array[0],size);

Я хочу переопределить open & read , чтобы он не выполнял никаких файловых операций, и я могу написать свою собственную функцию открытия и чтения.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы не можете переопределить методы без создания новых классов.И вы можете только переопределить виртуальные методы.Но std::ifstream::open() и std::ifstream::read() не являются виртуальными.

Чтобы сделать то, что вы хотите, вам нужно извлечь новый класс из std::basic_streambuf и реализовать желаемую функциональность (или ее отсутствие), а затем датьэкземпляр этого класса к std::ifstream (или лучше, std::istream напрямую) с помощью его метода rdbuf().

...