天书奇谈“>>”用自己的类(Friending '>>' with ow

2019-06-25 11:10发布

我有以下类,我与friended cout ,现在我想朋友将其与cin ,但我得到一个错误......谁能帮我,或者告诉我,我做了什么错?

错误:

C:\ MinGW的\ BIN ../ LIB / GCC /的mingw32 / 4.6.1 /包括/ C ++ /比特/ stl_algo.h:2215:4:错误:使 'const的RAngle' 作为 '这个'“诠释RAngle的论点: :操作者<(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 ;
    }
}

Answer 1:

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

而且,这不是很好的实践的研究,使operator<或其他运营商相比,回报整型,因为这可能会引起误解。 这样的运营商应该返回bool

因此,有前人的精力是这样的bool RAngle::operator<(const RAngle& other) const { /*...*/ } 本主题将在这里和这里 。

更新此代码是完全陌生的。 为什么要使用指针int ? 为什么做一些数据的私密性? 构造RAngle(int i,int j,int k)你想将无法正常工作。



文章来源: Friending '>>' with own class