无法访问类'std :: basic_ios <_Elem,_Traits>'中声明的私有成员

Fid*_*ids 10 c++ compiler-errors visual-studio-2010

遇到这种特殊方法的问题而不确定如何解决它!我得到的错误是上面的错误:

"错误C2248:'std :: basic_ios <_Elem,_Traits> :: basic_ios':无法访问类'std :: basic_ios <_Elem,_Traits>'C:\ Program Files\Microsoft Visual Studio 10.0\VC \中声明的私有成员包括\ ostream 604"

我的方法是:

ostream operator<<( ostream & stream, ProcessClass const & rhs )
{
  stream << rhs.name_;
  return stream;
}
Run Code Online (Sandbox Code Playgroud)

在标题中:

friend std::ostream operator<<( std::ostream & stream, ProcessClass const & rhs );
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?我认为这与通过引用而不是值传递有关...但我有点困惑!

Naw*_*waz 12

返回类型应该ostream &是对其的引用ostream.

ostream & operator<<( ostream & stream, ProcessClass const & rhs )
{    //^^^ note this!
  stream << rhs.name_;
  return stream;
}
Run Code Online (Sandbox Code Playgroud)

当通过返回(而不是参考),那么,要求的目标流的复制,但复制任何在C++流对象已被禁用由具有由拷贝构造1 private.

1.以及复制作业.

要知道为什么禁用任何流的复制,请在此处阅读我的详细答案: