Здравствуйте 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::o
fstream::rdbuf, которому, действительно, ничего передать нельзя, и который, действительно, так и должен быть определен, а std::
ostream::rdbuf :
LogBuf log_buf ("my_file.log");
std::ofstream file;
static_cast<std::ostream&>(file).rdbuf(&log_buf);
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен