我有三个层次相关的类:
Pattern
,其受_panels
类型的受保护字段std::vector<Panel>
。Panel
有一个受保护的字段_edges
,其类型为std::vector<Edge>
。Edge
最后有一个受保护的字段_verts
,其类型为std::vector<Eigen::Vector2f>
。我还有一个纯虚拟类Renderable
,它有一个纯虚函数virtual void render()
。我想创建继承自Renderable
的三个类中的每个类的专用版本,例如:
class VPattern : public Pattern, public Renderable
{
public:
void render() { ... }
protected:
...
private:
...
}; // class VPattern
但是,_panels
字段仍会包含Panel
的实例,而不包含VPanel
的实例。这意味着我必须将Edge
和Panel
的绘制逻辑放在Pattern
的绘制函数中,这显然不理想。
这里有不同的方法,我没有看到这会避免所有这些吗?使用包装类是一种更合适的方法吗?
答案 0 :(得分:0)
您是否有理由不能拥有Drawable
虚拟类,该虚拟类具有所有draw()
后代都将实现的纯虚函数drawable
?
public virtual struct Drawable {
virtual void draw() = 0;
};
public struct Edge : Drawable {
void draw() {}
};
//...