Я гулял, и я просто не могу найти простой ответ на этот вопрос. И это должно быть просто, поскольку STL вообще есть.
Я хочу определить MyOStream, который наследуется публично из std:: ostream. Скажем, я хочу называть foo() каждый раз, когда что-то записывается в мой поток.
class MyOStream : public ostream {
public:
...
private:
void foo() { ... }
}
Я понимаю, что открытый интерфейс ostream не виртуальный, так как это можно сделать? Я хочу, чтобы клиенты могли использовать оба оператора < и write() и put() в MyOStream и использовать расширенную способность моего класса.