基本上有予定義三個類:paralelogram
,point
和line
類,以及paralelogram
有一些vector
S的point
S和line
s,在所述paralelogram
I類正在定義compute_area
功能混亂上正在調用非const函數的const函數
double Paralelogram::compute_area() const
{
assert(!points.empty());
double h = points[3].distance_to_line(lines[0]); // point[3] is the last point in
// the vector however it is not a
// const object, and this gives a
// compile time error
double base = points[0].distance_to_point(points[1]);
return base*h;
}
編輯distance_to_line
功能是非const
double Point::distance_to_line(Line& l)
{
return l.distance_to_point(*this);
}
刪除自定義函數的const
和但聲明解決了這個問題,我的推理,而編碼,被compute_area
不修改的對象,因此它可以const
,然而,這是隻要正確的,因爲它運行在const
對象和調用功能const
對象,對不對?
如果point
對象也不是const
也是,這是不再有效。並且因爲它們不是const
,所以它是在const
刪除後工作的原因。
這對我來說是一個令人迷惑的地方,我不修改對象,但是它使用的對象給出了問題,而且我在想我還沒有改變這些對象,但顯然我的混淆const
瞭解。還有一件事,這是否與this
Paralelogram
類的指針有關,如果是的話,你能澄清嗎?
你的'distance_to_line'函數是一個非const函數,對嗎? – Nawaz 2011-04-09 15:59:38
是的,我在帖子上做了一個修改。 – 2011-04-09 16:01:47
「平行四邊形」 – Johnsyweb 2011-04-09 16:05:03