我使用兩個Point
s至限定Line
並且也是LineSegment
,如:如何區分Line Line和Line?
class Point { ... };
class Line
{
Point p1, p2;
//...
};
class LineSegment
{
Point p1, p2;
//...
};
LineSegment
具有相同的定義Line
,所以我用typedef Line LineSegment
在第一而不是限定另一個LineSegment
類。但很快,我發現我無法定義函數distance
來計算點與線或點與線段之間的距離。
class Point { ... };
class Line
{
Point p1, p2;
//...
};
typedef Line LineSegment;
double distance(const Point& a, const Line& b) { ... }
double distance(const Point& a, const LineSegment& b) { ... }
當然,我會得到一個編譯錯誤。
所以,我的問題是:有沒有更好的方法來區分Line
從LineSegment
沒有重新定義LineSegment
?
定義'AbstractLine'有兩個點,然後子類到'Line'和'LineSegment'? – Amadan
而不是使用'Point'作爲'Line',你可以使用一個漸變值,另一個用於y-截距(假設你是2D的)。 –
如果它們相同,則不要區分它們。只有一個定義,因此只有一個功能。不要重複自己。如果他們的功能稍後出現分歧,那麼Amadan的解決方案是一個好主意。 –