朋友'>>'有自己的班级

时间:2012-06-13 10:07:08

标签: c++ operator-overloading

我有以下课程,我与cout进行了交流,现在我正试图与cin交朋友,但我收到错误...有人可以帮我,或者告诉我是什么我做错了吗?

错误:

  

c:\ mingw \ bin ../ lib / gcc / mingw32 / 4.6.1 / include / c ++ / bits / stl_algo.h:2215:4:错误:将'const RAngle'作为'this'参数传递给' int RAngle :: 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 ;
    }
}

1 个答案:

答案 0 :(得分:4)

没有足够的代码来回答您的问题。但是从错误中我会说,你的int RAngle::operator<(RAngle)没有被定义为const方法而你在某个地方使用它,你只有const。

此外,使operator<或其他比较运算符返回int并不是很好,因为这可能会导致误解。此类运营商应返回bool

所以,有这样的事情bool RAngle::operator<(const RAngle& other) const { /*...*/ }。本主题涵盖herehere

更新此代码非常奇怪。为什么要使用指向int的指针?为什么要将一些数据私有化构造函数RAngle(int i,int j,int k)将无法正常工作。