1

不是一个真正的大问题,但我想知道当涉及到类中的朋友函数时,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;
    }
4

1 回答 1

2

您的代码没有任何问题。我敢打赌,IntelliSense 会搞砸。尝试为您的项目删除 IntelliSense 数据库以查看错误是否会消失(IntelliSense 数据库将在重新启动 Visual Studio 后自行重建)。该数据库应位于您的.sln文件旁边,并且(至少对于 Visual Studio 2008)具有扩展名.ncb.

除此之外,还有一些额外的信息。VisualStudio AFAIK 的 IntelliSense 功能实际上是由与 Microsoft 不同的公司开发的,因此编译器和 IntelliSense 有时可能对正确与否有不同的看法。只是说。:)

于 2012-08-31T05:49:06.883 回答