我有以下课程,我与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

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 ;
    }
}

最佳答案

没有足够的代码来回答您的问题。但是从错误中我会告诉你,您的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)不能像您想象的那样工作。

关于c++ - 将“>>”与自己的类(class)联系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11012630/

10-13 06:11