我有以下课程,我与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 ;
}
}
答案 0 :(得分:4)
没有足够的代码来回答您的问题。但是从错误中我会说,你的int RAngle::operator<(RAngle)
没有被定义为const方法而你在某个地方使用它,你只有const。
此外,使operator<
或其他比较运算符返回int并不是很好,因为这可能会导致误解。此类运营商应返回bool
。
所以,有这样的事情bool RAngle::operator<(const RAngle& other) const { /*...*/ }
。本主题涵盖here和here。
更新此代码非常奇怪。为什么要使用指向int
的指针?为什么要将一些数据私有化构造函数RAngle(int i,int j,int k)
将无法正常工作。