C ++ Декорировать классы basic_iostream

Я хочу сделать что-то вроде следующего кода:

class foo
{
private:
    std::fstream* m_stream;

public:
    foo(std::fstream* stream) : m_stream(stream) { }

    foo& write(char const* s, std::streamsize count)
    {
        if (/*condition*/)
        {
            m_stream->write(s, count);
        }
        else
        {
            // ...
        }

        return *this;
    }

    foo& read(char* s, std::streamsize count)
    {
        if (/*condition*/)
        {
            m_stream->read(s, count);
        }
        else
        {
            // ...
        }

        return *this;
    }
};

Мне нужно добавить такое же поведение ко всем аналогичным методам (например, put ). Это должно применяться не только к файловым потокам, но ко всем другим классам потоков. Есть ли какой-нибудь простой способ разрешить эти функции?

5
задан 0xbadf00d 17 June 2011 в 11:08
поделиться