2010-12-19 239 views
3

我想定义从std :: ostream公开继承的MyOStream。假设我想实现我自己的潮流。继承std :: ostream

这怎么办? 我会很高兴的任何帮助,代码示例或任何相关链接...

谢谢!

+1

你究竟想要完成什么? – 2010-12-19 09:41:47

回答

0
class YourStream : public std::ostream 
{ 
public: 
    YourStream() : std::ostream(pointer to your favorite buffer) 
    { 
    } 
}; 

链接? Google为他们,例如发现this。具体细节请参考一本好书或standard

+0

从std :: ostream继承时,可能应该使用'virtual'继承。 – 2010-12-19 09:46:46

3

我不明白你想要在这里完成什么。用户代码不应该从流本身继承,因为这些流旨在提供广义的特定于语言环境的转换/“字符串化”功能。如果您尝试使用可以写入新缓冲区位置(即gzip流)的ostream,则通常应该从basic_streambuf继承,这允许您使用现有的iostream转换工具,但将允许您重定向它们输入输出。

如果您想了解iostream本身的运作方式,我听说过有关该主题的最好的书籍是由Angelika Langer和Klaus Kreft编写的Standard C++ IOStreams and Locales。我不能保证这本书,因为我还没有得到我的副本(它的下一个在我的列表中),但是你可以在StackOverflow上找到它的几个建议。

你也可能想看看boost::iostreams,它为希望定制iostream系统行为的人提供了一些帮助。