基 class 的派生 class 作为抽象 class
derived class of a base class functioning as an abstract class
我定义了一个超级classelement
。 element
的一些派生 class 说 triangle
、 quad
和 cube
。 element
objects 中的一些是边界元素。如果 element
是边界元素,那么我必须定义额外的数据成员和函数。如果 element
class 不是基础 class,我可以很容易地推导出 boundary_element
class。(我的意思是,如果 triangle
, quad
和 cube
是分开的 classes 我可以定义单独的派生 classes 像 boundary_triangle
, boundary_quad
和 boundary_cube
) .
所以我的问题是我必须定义一个 subclass boundary_element
它必须是定义派生 classes 的基础(甚至抽象)class boundary_quad
、boundary_triangle
和 boundary_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_triangle
、 boundary_quad
和 boundary_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++ 具有多重继承,因此您可以同时从 Element
和 Boundary
派生,避免代码重复。
像这样:
class Element {
};
class Boundary {
};
class Triangle : public Element {
};
class BoundaryTriangle : public Triangle, public Boundary {
};
. . .
我定义了一个超级classelement
。 element
的一些派生 class 说 triangle
、 quad
和 cube
。 element
objects 中的一些是边界元素。如果 element
是边界元素,那么我必须定义额外的数据成员和函数。如果 element
class 不是基础 class,我可以很容易地推导出 boundary_element
class。(我的意思是,如果 triangle
, quad
和 cube
是分开的 classes 我可以定义单独的派生 classes 像 boundary_triangle
, boundary_quad
和 boundary_cube
) .
所以我的问题是我必须定义一个 subclass boundary_element
它必须是定义派生 classes 的基础(甚至抽象)class boundary_quad
、boundary_triangle
和 boundary_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_triangle
、 boundary_quad
和 boundary_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++ 具有多重继承,因此您可以同时从 Element
和 Boundary
派生,避免代码重复。
像这样:
class Element {
};
class Boundary {
};
class Triangle : public Element {
};
class BoundaryTriangle : public Triangle, public Boundary {
};
. . .