【发布时间】:2012-08-31 04:44:39
【问题描述】:
这并不是什么大问题,但我想知道在类中的友元函数方面,IntelliSense 是否搞砸了?
我有一个使用 ostream 和 istream (>) 的重载运算符的类,并且我在我的类中将它们标记为友元函数。所以理论上他们应该可以访问类的私有成员。该程序编译并运行良好,没有错误 - 但随着我继续编写代码,IntelliSense 不断报告成员函数无法访问这些函数。它仍然可以编译,但我想知道这是否是 IntelliSense 的问题或我的问题,而我碰巧很幸运它正在运行?
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声明? -
另外,您应该检查输入运算符,因为您忘记了斜线。
-
不,friend 声明在类内部,但实际函数在类外部(但在同一个头文件和命名空间中)。
标签: c++ operator-overloading intellisense