0

私は次のクラスを持っています。私はcoutそれを友達にしようとしてcinいますが、エラーが発生します...誰かが私を助けてくれますか、または私が間違ったことを教えてもらえますか?

エラー:

c:\ mingw \ bin ../ lib / gcc / mingw32 / 4.6.1 / include / c ++ / bits / stl_algo.h:2215:4:エラー:'constRAngle'を'intRAngleの'this'引数として渡します: :operator <(RAngle)'は修飾子を破棄します[-fpermissive]

クラスRAngle

class RAngle
{
    private:
        int *x,*y,*l;
    public:
        int solution,prec;
        RAngle(){
            this->x = 0;
            this->y = 0;
            this->l = 0;
        }

        RAngle(int i,int j,int k){
            this->x = &i;
            this->y = &j;
            this->l = &k;
        }

    friend istream& operator >>( istream& is, RAngle &ra)
    {
        is >> ra->x;
        is >> ra->y;
        is >> ra->l;

        return is ;
    }
}
4

1 に答える 1

4

あなたの質問に答えるのに十分なコードがありません。しかし、エラーから、あなたint RAngle::operator<(RAngle)はconstメソッドとして定義されておらず、constしかない場所で使用していると言えます。

operator<また、誤解を招く可能性があるため、作成または他の比較演算子がintを返すことはあまり適切ではありません。このような演算子はを返す必要がありboolます。

だから、このようなものがあるはずですbool RAngle::operator<(const RAngle& other) const { /*...*/ }。このトピックはここここでカバーされています。

更新このコードは完全に奇妙です。なぜへのポインタを使用するのintですか?一部のデータを非公開にするのはなぜですか?コンストラクターRAngle(int i,int j,int k)は、想定どおりに機能しません。

于 2012-06-13T10:16:18.697 に答える