我有一个render
函数,我需要传递要渲染的窗口以及要绘制的组件。所有组件都派生自sf::Drawable
类。例如,我可以有一个{ {1}}打招呼或其他什么,我想画一个sf::Text
。sf::Rectangle
是抽象的,所以我无法创建sf::Drawable
的数据结构,然后打印该结构的每个成员。
我认为其他替代方案是为每个组件分别调用sf::Drawable
,但这只是凌乱的代码。我可以重载渲染,因此它将花费render
,而另一个花费std::vector<sf::Text>
,但这将创建7个以上的渲染函数,而我将需要7个以上的数据结构来保存这些sf对象
我该如何以正确的OOP方法进行操作?
一些可视化代码:
std::vector<sf::Rectangle>
编译错误: State s("123456780", texture); //State is derived from drawable
std::vector<sf::Drawable> components;
sf::Text str("You won!!!", font, 30);
while (running) {
sf::Event evant;
onEvent(window, evant,s);
if (s.equals(goal))
{
components.push_back(str);
}else
components.push_back(s);
render(window, components);
}