Re[3]: Перегрузка streambuf
От: Павел Кузнецов  
Дата: 30.08.02 16:26
Оценка:
Здравствуйте Sv2k, Вы писали:

S>К сожалению, придется переползать на GCC 3.2 (и потерять совместимость с GCC 2.95), так как в старой библиотеке libstdc++ класс ofstream наследуется от fstreambase, в котором есть такие гадости:


S>
S>class fstreambase : virtual public ios {
S>    mutable filebuf __my_fb;

S>public:
S>    filebuf* rdbuf() const { return &__my_fb; }
S>    . . .
S>}
S>


S>Соответственно, вызывать std::ostream::rdbuf, передавая в качестве аргумента свой LogBuf нереально.


Надо вызывать не std::ofstream::rdbuf, которому, действительно, ничего передать нельзя, и который, действительно, так и должен быть определен, а std::ostream::rdbuf :
LogBuf log_buf ("my_file.log");
std::ofstream file;
static_cast<std::ostream&>(file).rdbuf(&log_buf);
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.