0

我有以下课程,我与cout它成为朋友,现在我正在尝试与它成为朋友,cin但我得到一个错误......谁能帮助我,或者告诉我我做错了什么?

错误:

c:\mingw\bin../lib/gcc/mingw32/4.6.1/include/c++/bits/stl_algo.h:2215:4:错误:将'const RANgle'作为'int RANgle的'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<另外,make或其他比较运算符返回 int也不是很实用,因为这可能会导致误解。这样的运营商应该返回bool

所以,会有这样的事情bool RAngle::operator<(const RAngle& other) const { /*...*/ }。这个主题在这里这里都有介绍。

更新此代码完全奇怪。为什么要使用指针int?为什么要将某些数据设为私有?构造函数RAngle(int i,int j,int k)不会像你想象的那样工作。

于 2012-06-13T10:16:18.697 回答