遇到此特定方法的问题而不确定如何解决它!我得到的错误是上面的:
“错误C2248:'std :: basic_ios< _Elem,_Traits> :: basic_ios':不能 访问类中声明的私有成员 '的std :: basic_ios< _Elem,_Traits>' C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \ ostream 604“
我的方法是:
ostream operator<<( ostream & stream, ProcessClass const & rhs )
{
stream << rhs.name_;
return stream;
}
在标题中:
friend std::ostream operator<<( std::ostream & stream, ProcessClass const & rhs );
有关如何解决此问题的任何想法?我认为这与通过引用而不是值传递有关...但我有点困惑!
答案 0 :(得分:12)
返回类型应为ostream &
,这是对ostream
的引用。
ostream & operator<<( ostream & stream, ProcessClass const & rhs )
{ //^^^ note this!
stream << rhs.name_;
return stream;
}
当您通过 value (而不是 reference )返回时,则需要复制流对象,但复制任何流对象通过创建复制构造函数 1 private
,C ++已被禁用。
1。和复制作业。功能
要知道为何禁用任何流的复制,请在此处阅读我的详细解答:
答案 1 :(得分:4)
您无法复制流,而是返回引用,更改为
ostream& operator<<( ostream & stream, ProcessClass const & rhs )