c – 无法访问类’std :: basic_ios’中声明的私有成员

前端之家收集整理的这篇文章主要介绍了c – 无法访问类’std :: basic_ios’中声明的私有成员前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一个问题与这个特定的方法,不知道如何解决它!我得到的错误是上面的:

“error C2248: ‘std::basic_ios<_Elem,_Traits>::basic_ios’ : cannot
access private member declared in class
‘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 );

关于如何解决这个问题的任何想法?我认为这是通过参考而不是价值…但我有点困惑!

解决方法

返回类型应为ostream&这是对ostream的引用.
ostream & operator<<( ostream & stream,ProcessClass const & rhs )
{    //^^^ note this!
  stream << rhs.name_;
  return stream;
}

当通过值返回(而不是引用)时,这需要复制流对象,但是通过使copy-constructor1是私有的,C中的任何流对象的复制已被禁用.

1.和副本分配.

要知道为什么复制任何流已经被禁用,请在这里阅读我的详细答案:

> Why copying stringstream is not allowed?

原文链接:https://www.f2er.com/c/114848.html

猜你在找的C&C++相关文章