我有以下课程,我与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 { /*...*/ }
的内容。本主题涵盖here和here。
更新此代码是完全奇怪的。为什么使用指向int
的指针?为什么将某些数据设为私有?构造函数RAngle(int i,int j,int k)
不能像您想象的那样工作。
关于c++ - 将“>>”与自己的类(class)联系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11012630/