您应该将SFML RenderWindow继承到自定义渲染类中,还是将其作为字段? 在java中编码了一段时间后,使用GraceS2D,我想到了用我所学的其他语言,例如C++。我通常使用SFML,并且有一个Render类,以减少其他类对SFML的依赖性(例如,如果我必须切换库,我就不需要在不相关的类中切换太多代码)。我想知道是应该让这个Render类继承RenderWindow,还是将其作为一个成员。

您应该将SFML RenderWindow继承到自定义渲染类中,还是将其作为字段? 在java中编码了一段时间后,使用GraceS2D,我想到了用我所学的其他语言,例如C++。我通常使用SFML,并且有一个Render类,以减少其他类对SFML的依赖性(例如,如果我必须切换库,我就不需要在不相关的类中切换太多代码)。我想知道是应该让这个Render类继承RenderWindow,还是将其作为一个成员。,c++,sfml,C++,Sfml,目前经常被建议的习惯用法是“组合重于继承”。从你对所做事情的模糊描述来看,实际上不可能给出准确的答案。我假设您正在讨论框架和任何图形库之间的简单接口 在这种情况下,答案非常简单,因为继承会自动更改渲染的API,并且会更改您使用的每个图形库,从而破坏它的全部用途。因此,如果您将其用作成员变量,您可以为您的框架构建一个稳定的API,并在render类的范围内对不同的库进行所有的自适应。RenderWindow不进行任何渲染。绘图发生在渲染目标中。RenderTarget中的draw方法不是虚拟的,因

目前经常被建议的习惯用法是“组合重于继承”。从你对所做事情的模糊描述来看,实际上不可能给出准确的答案。我假设您正在讨论框架和任何图形库之间的简单接口


在这种情况下,答案非常简单,因为继承会自动更改渲染的API,并且会更改您使用的每个图形库,从而破坏它的全部用途。因此,如果您将其用作成员变量,您可以为您的框架构建一个稳定的API,并在render类的范围内对不同的库进行所有的自适应。

RenderWindow
不进行任何渲染。绘图发生在
渲染目标
中。
RenderTarget
中的
draw
方法不是虚拟的,因此您无法覆盖它(您可以屏蔽它,但如果使用多态性,它将无法正常工作)。另外,我在这里谈论的是SFML2;我不确定1.6.0是否有趣,但这会如何影响我对继承和字段的决定?