我有一个这样的basic_iostream派生类:
class MyStream : public std::basic_iostream< char >,
private boost::noncopyable
{
public:
explicit MyStream( SomeUsefulData& data ) :
buffer_( data ),
std::basic_iostream< char >( &buffer_ )
{
};
~MyStream()
{
};
private:
/// internal stream buffer
MyStreamBuffer< char > buffer_;
}; // class MyStream
Run Code Online (Sandbox Code Playgroud)
但是,当我创建它的实例时,我得到一个DataAbort异常.
SomeUsefulData data;
MyStream stream( data ); // <- Data Abort
Run Code Online (Sandbox Code Playgroud)
但是,如果我将MyStream更改为堆分配MyStreamBuffer,它可以正常工作:
class MyStream : public std::basic_iostream< char >,
private boost::noncopyable
{
public:
explicit MyStream( SomeUsefulData& data ) :
std::basic_iostream< char >( new MyStreamBuffer< char >( data ) )
{
};
~MyStream()
{
delete rdbuf();
};
}; // class MyStream
Run Code Online (Sandbox Code Playgroud)
使用类成员初始化父类是错误的吗?
谢谢,PaulH