基 class 的派生 class 作为抽象 class

derived class of a base class functioning as an abstract class

我定义了一个超级classelementelement 的一些派生 class 说 trianglequadcubeelement objects 中的一些是边界元素。如果 element 是边界元素,那么我必须定义额外的数据成员和函数。如果 element class 不是基础 class,我可以很容易地推导出 boundary_element class。(我的意思是,如果 trianglequadcube 是分开的 classes 我可以定义单独的派生 classes 像 boundary_triangle , boundary_quadboundary_cube) .

所以我的问题是我必须定义一个 subclass boundary_element 它必须是定义派生 classes 的基础(甚至抽象)class boundary_quadboundary_triangleboundary_cube

这在 C++ 中是否可行?任何人都可以建议任何符合目的的架构吗?

我可以根据我的逻辑解决问题的另一种方法是,定义一个 class,如下所示:

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指针被定义为另一个class的成员变量。如何使用继承有效地重组此 class。 (即将其作为抽象函数 class,用于派生 boundary_triangleboundary_quadboundary_cube class )

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

Is this somehow possible in C++?

当然是。

could anyone suggest any architecture which serves the purpose?

大致如下:

  • 有抽象基础class和接口

    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++ 具有多重继承,因此您可以同时从 ElementBoundary 派生,避免代码重复。

像这样:

class Element {
};

class Boundary {
};

class Triangle : public Element {
};

class BoundaryTriangle : public Triangle, public Boundary {
};

. . .