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 に答える