1
不是一个真正的大问题,但我想知道是否智能感知搞砸了,当涉及到类中的朋友功能?智能感知和朋友功能虚假错误(VS2010)
我有一个类使用ostream和istream的重载操作符(< <,>>),并且我把它们标记为我班内的朋友函数。所以理论上他们应该可以访问班级的私人成员。该程序编译和运行良好,没有错误 - 但由于我继续编写代码,智能感知不断报告成员函数不可访问的功能。它仍然编译,但我想知道这是智能感知问题还是我的一端,我只是碰巧幸运的是它运行了吗?
friend std::ostream & operator <<(std::ostream &, const Rational &);
friend std::istream & operator >>(std::istream &, Rational &);
std::ostream & operator <<(std::ostream & outs, const Rational & source)
{
outs << source.itsNum << '/' << source.itsDen;
return outs;
}
std::istream & operator >>(std::istream & ins, Rational & target)
{
ins >> target.itsNum >> target.itsDen;
return ins;
}
实际的流操作符是否也在类中,而不仅仅是'friend'声明? –
另外,你应该检查输入的操作符,因为你忘记了斜线。 –
不,朋友声明在类内,但实际函数在类之外(但在同一个头文件和命名空间中)。 –