gpt4 book ai didi

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'

转载 作者:可可西里 更新时间:2023-11-01 17:10:58 24 4
gpt4 key购买 nike

收到此错误,我很确定它在 operator<< 函数中。两份打印品都是公开的。

void CRational::print() const
{
print(cout);
}

void CRational::print(ostream & sout) const
{
if(m_denominator == 1)
cout << m_numerator;
else
cout << m_numerator << "/" << m_denominator;
}

ostream operator<<(ostream & sout,const CRational a)
{
a.print();

return sout;
}

CRational operator++() // prefix ++x
{
m_numerator += m_denominator;
return *this;
}

in main:
cout << "e before: " << e << ", \"cout << ++e\" : " << ++e << " after: " << e << endl;

最佳答案

您需要通过引用而不是值返回 ostream。它试图调用构造函数。也可以传递 'a' 作为引用:

ostream& operator<<(ostream & sout,const CRational& a)

我还注意到打印方法可能是错误的。它有 sout 作为流的名称传递,但随后直接使用 cout 实现。应该是

void CRational::print(ostream & sout) const
{
if(m_denominator == 1)
sout << m_numerator;
else
sout << m_numerator << "/" << m_denominator;
}

关于c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5137815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com