有一个问题与这个特定的方法,不知道如何解决它!我得到的错误是上面的:
“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.和副本分配.
要知道为什么复制任何流已经被禁用,请在这里阅读我的详细答案: