我有以下有关数学/几何的类: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