加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:22:10 所属栏目:百科 来源:网络整理
导读:有一个问题与这个特定的方法,不知道如何解决它!我得到的错误是上面的: “error C2248: ‘std::basic_ios_Elem,_Traits::basic_ios’ : cannot access private member declared in class ‘std::basic_ios_Elem,_Traits’ C:Program FilesMicrosoft Visua
有一个问题与这个特定的方法,不知道如何解决它!我得到的错误是上面的:

“error C2248: ‘std::basic_ios<_Elem,_Traits>::basic_ios’ : cannot
access private member declared in class
‘std::basic_ios<_Elem,_Traits>’ C:Program FilesMicrosoft Visual
Studio 10.0VCincludeostream 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?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读