2013-10-30 168 views
-2

我想验证第一个对象是否小于第二个对象。 我收到错误消息,第一个是areaCircle is not a type运算符重载<

bool Circle::operator < (const Circle & pc) const 
{ 
    return *this.areaCircle(getradius) < pc.areaCircle(getradius) ? true : false; 
} 

这里是我的areaCircle功能

float areaCircle(float radius){return(radius*radius*3.1416);} 
+0

areaCircle看起来像一个全局函数对我来说是一个类成员的'Circle' ... – Joe

+0

运算符优先级...'* this.areaCircle'应该是'(* this).areaCircle',但那么这只是简单的'this-> areaCircle' ...(如果'areaCircle()'真的是一个成员函数......) – 2013-10-30 23:05:28

+2

计算区域没有意义。该面积与半径成正比。所以只需比较半径。 –

回答

3

.拥有*优先。你想要->

return this->areaCircle(getradius) < pc.areaCircle(getradius) ? true : false; 

或者只是完全忽略了this->(这是隐含的)。


此外,由于你的areaCircle功能不依赖于对象的状态,你应该考虑把它的静态成员函数或免费的函数。

+2

...当你在它的时候,忽略三元运算符:'return areaCircle(getradius)

+0

对不起。误解。 –