基类的派生类,用作抽象类
derived class of a base class functioning as an abstract class
我定义了一个超类element
。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++中可能吗?
当然是。
有人能提出任何符合目的的架构吗?
大致如下:
-
有一个抽象基类和接口
class AbstractShape { boundary getBoundary() const = 0; void draw(OutputScreen& screen) const = 0; };
-
实现特定形状,如
Triangle : public AbstractShape { // Implement the triangle specifics }; Rectangle : public AbstractShape { // Implement the rectangle specifics }; Circle : public AbstractShape { // Implement the circle specifics };
相关文章:
- 如何在从抽象基派生的类中实现相同的方法?
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 从从该抽象类派生的 Python 对象强制转换C++抽象类C++
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 如何防止派生类成为 c++ 中的抽象类?
- 无法实例化抽象类,但类不是抽象/派生方法的参数
- 复制从抽象类派生的对象
- OOP - 抽象类类型,初始化基类和派生类中的变量
- 确保派生的类实现至少是来自抽象类(C )的两种方法之一
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- 派生类使用的抽象类的方法
- 使用从WINRT网格类派生的抽象类时,Casttobase未解决的外部符号错误
- 基类的派生类,用作抽象类
- 多个"level"派生抽象类
- 尝试定义派生自抽象类的类类型的对象时出错
- 从抽象类派生的类的对象应在免费商店中
- C 带有嵌套类的抽象类.派生的类和嵌套类
- 在C++中从抽象类派生的类中没有销毁阶段
- 如果函数是从抽象类派生的,则不能用具体的类指针调用该函数
- 如何实例化从抽象类派生的类