我定义了一个父类(super class)元素
。有一些 element
的派生类,比如 triangle
, quad
和 cube
。一些 element
对象是边界元素。如果 element
是边界元素,那么我必须定义额外的数据成员和函数。如果 element
类不是基类,我可以很容易地派生一个 boundary_element
类。(我的意思是,如果 triangle
, quad
和 cube
是单独的类 我可以定义单独的派生类,如 boundary_triangle
、 boundary_quad
和 boundary_cube
).
所以我的问题是我必须定义一个子类 boundary_element
,它必须是定义派生类 boundary_quad
、 boundary_triangle 的基类(甚至是抽象类)
和 boundary_cube
。
这在 C++ 中是可行的吗?任何人都可以建议任何符合目的的架构吗?
我可以根据我的逻辑解决我的问题的另一种方法是,定义一个如下所示的类:
class boundary_element
{
element* m_boundary_elem;
//data members needed for quad,triangle and cube
public:
boundary (element*);
//functions for modifying data's of triangle,cube,quad.
}
element
指针被定义为另一个类的成员变量。如何使用继承有效地重构此类。 (即将其作为抽象类使用,用于派生 boundary_triangle
、boundary_quad
和 boundary_cube
类)
我不知道我的问题很奇怪,但作为初学者,我真的很困惑如何正确使用继承。抱歉,如果我的标题有误导性。
最佳答案
C++ 具有多重继承,因此您可以同时从Element
和Boundary
派生,避免代码重复。
像这样:
class Element {
};
class Boundary {
};
class Triangle : public Element {
};
class BoundaryTriangle : public Triangle, public Boundary {
};
. . .
关于c++ - 基类的派生类充当抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042208/