我有以下有關數學/幾何的類:MathLine
,MathPoint
,MathVector
,MathPlane
。將父類轉換爲子類以避免冗餘
關於這些,您可以進行旋轉和平移變換。所以我創建了一個名爲GeometricObject
的父類,它可以在幾何空間中進行轉換。
現在,我能夠爲每個子類不同的實現創造了純虛函數的類。現在,我想這可能需要GeometricObject
,但「智能」地返回什麼類型的我居然把在一般的功能。例如,我有以下的功能,旋轉的幾何對象,以不同的座標系:
GeometricObject rotate_object_to_global_coordinate_system(GeometricObject object) {
object.rotateX(90); // Pure virtual functions
object.rotateY(90);
object.rotateZ(90);
return object;
}
如果我輸入一個MathLine,我期望該函數「投射」到MathLine
中,執行MathLine
實現我的虛函數,並返回MathLine
。
我到處搜索過這個,看起來這可以通過使用指針(auto_ptr
)或鑄造(dynamic_cast
)來完成。這看起來不太好,因爲我已經讀過,這是一個不好的方法,因爲它會犧牲一些顯着的性能。它也似乎是一種高級編程語言應該具備的簡單功能。這可以做到嗎?
我覺得對我來說要做到這一點,否則,我會寫不同的功能,基本上執行相同的虛擬功能不同的子類這是非常重要的。我將不得不寫:
MathLine rotate_line_to_global_coordinate_system(MathLine object);
MathPoint rotate_point_to_global_coordinate_system(MathPoint object);
MathPlane rotate_plane_to_global_coordinate_system(MathPlane object);
// etc.
我敢肯定,我檢查了這一點,這是行不通的。這就是爲什麼我把這個問題放在第一位。但是,我會仔細檢查並通知您。謝謝! –
@RandyArdywibowo如果您需要直接幫助,請發佈您的代碼。 – Aracthor