c++ - 基类的派生类充当抽象类

标签 c++ oop inheritance abstract-class virtual-functions

我定义了一个父类(super class)元素。有一些 element 的派生类,比如 trianglequadcube 。一些 element 对象是边界元素。如果 element 是边界元素,那么我必须定义额外的数据成员和函数。如果 element 类不是基类,我可以很容易地派生一个 boundary_element 类。(我的意思是,如果 triangle quadcube 是单独的类 我可以定义单独的派生类,如 boundary_triangleboundary_quadboundary_cube).

所以我的问题是我必须定义一个子类 boundary_element ,它必须是定义派生类 boundary_quadboundary_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_triangleboundary_quadboundary_cube 类)

我不知道我的问题很奇怪,但作为初学者,我真的很困惑如何正确使用继承。抱歉,如果我的标题有误导性。

最佳答案

C++ 具有多重继承,因此您可以同时从ElementBoundary 派生,避免代码重复。

像这样:

class Element {
};

class Boundary {
};

class Triangle : public Element {
};

class BoundaryTriangle : public Triangle, public Boundary {
};

. . .

关于c++ - 基类的派生类充当抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042208/

相关文章:

c++ - 为什么int myVar {5}给出错误并且不起作用?

c++ - 使用winbgim库重新定义int right error

java - UML 类图连接是否到处都使用一个类?

JavaScript 伪类模式

c++ - 将 C++ 方法绑定(bind)到现有 JS 函数原型(prototype)的最简单方法?

c++ - 多重继承不明确的基类

c++ - 无法访问派生类中的基本 protected 成员! (在虚函数中)

c++ - 确定跨域 Active Directory 组成员身份

c++ - ds :0023:003a3000=? 是什么? drwatson FAULT 末尾的东西?

JavaScript ".method"返回未定义