我无法理解为什么它不接受const
限定词的错误
[Error] passing 'const abc' as 'this' argument of 'int abc::getarea()' discards qualifiers [-fpermissive]
以下是代码。
#include<iostream>
using namespace std;
class abc{
public:
abc(){
}
abc(int a,int b){
length=a;
height=b;
}
int getarea(){
return length*height;
}
bool operator <(const abc&) const;
private:
int length;
int height;
};
bool abc::operator <(const abc& d) const{
return getarea() < d.getarea();
}
int main(){
abc a(10,12);
abc b(13,15);
if(a < b)
cout << "\n B has larger volume";
else
cout << "\n A has larger volume";
return 0;
}
答案 0 :(得分:1)
int abc::getarea()
未标记为const
,但它正在来自其const
个成员函数之一的const对象上调用。您应该将getarea
成员函数标记为const
,因为它不会更改对象的状态。
答案 1 :(得分:1)
getarea
不是const
,因此无法在const
个对象(或const
对象)上调用它。要解决此问题,请将其声明为const
:
int getarea() const {
// ^^^^^
return length*height;
}