【发布时间】:2018-08-09 21:58:30
【问题描述】:
我正在开发一个 UI 框架并尝试使我的代码更易于管理并使用接口(我知道它们只是类。)似乎是最好的选择。
我会给你一个我想做的例子:
在控件基类中,它将具有所有控件都具有的通用成员,例如 ID、名称和位置。我希望能够实现一个界面来管理一个按钮的文本。界面将存储和绘制文本。 现在要做到这一点,我需要重写 Draw() 函数,但是我不知道我如何转发声明。
伪代码
class ITextAble
virtual void DrawText() override Control::Draw()
{
Control::Draw();
GetRenderWindow()->draw(m_text);
}
class Button : public ITextAble
virtual void Draw ()
{
m_renderWindow->draw(m_shape);
}
sf::RenderWindow * GetRenderWindow () const
{
return m_renderWindow;
}
如果你不能说我对 C++ 编程很陌生,我不知道这是否可以在 C++ 中完成,但如果是真的,我会再次感到惊讶。
【问题讨论】:
-
只有
Draw可以覆盖Draw。被覆盖的Draw将不得不满足于调用DrawText。
标签: c++ inheritance interface