От чего унаследовать, когда я хочу создать новый fstream? - PullRequest
0 голосов
/ 23 октября 2011

Я хочу определить новый тип filestream в C ++.От чего мне наследовать?

1 Ответ

4 голосов
/ 23 октября 2011

Наследовать от basic_filebuf или basic_streambuf, если вы пишете части ввода-вывода с нуля.Вам также может потребоваться класс, производный от basic_[i/o]fstream, но это для удобства строго необязательно.Если шаблонирование не требуется, отбросьте basic_ и наследуйте от классов, а не от шаблонов.

Классы *stream всех диспетчеризуют ввод / вывод через полиморфный указатель, который вы можете получить и установить с помощью rdbuf() метод.Поэтому, если / пока вы не реализуете вспомогательный класс, вы можете выполнить тестирование путем создания экземпляра std::iostream и вызова rdbuf с указателем.

Очень полезно иметь под рукой копию стандарта для работы стребования к производному классу.Ваша основная функциональность будет в виртуальных функциях overflow и underflow.

...