当我尝试转换类时,我无法找出导致错误的原因。对象具有与成员函数“Gradien::setAngel”不兼容的类型限定符。
将阶数转换为渐变的重载运算符
Gradien& operator=(const Degree& d) const {
int a = static_cast<int>((d.getAngel() / 360.0) * 400);
setAngel(a);
return *this;
}
在本例中,Gradien是Degree的子类,它们看起来几乎相同:
class Gradien : public Degree
{
private:
int angle = 400;
const string unit = " gon";
public:
Gradien() = default;
Gradien(int a) : Degree(a) {};
int getAngel() const { return angle; }
void setAngel(int w) { angle = w; }
string getUnit() const { return unit; }
}
我试图通过删除consts来更改某事,但没有更改。这似乎导致了问题:setAngel(a);
乐于助人:)
2条答案
按热度按时间rqcrx0a61#
赋值运算符符合
const
条件:这使得调用
setAngel
(即 * 不 *const
限定)无效:使用
const
限定的赋值运算符可能会破坏使用赋值运算符的目的。qnyhuwrf2#
您已将
operator=
重载声明为const
。它是一个常量方法。您可以对非常量对象或常量对象调用它,但该方法不能修改对象。将
operator=
声明为const
(几乎)是没有意义的,因为赋值通常需要修改它。