现在,我正在开发的游戏的GUI API具有抽象的Image和Font类。根据是否使用GL,SDL等字体,它们加载如下字体:

Font *segoe = Font::load("segoe.ttf");

还有一个相应的destroy()静态函数。

我喜欢这种设计,但是我想知道将它包装起来以便不需要指针是一个好主意。诸如此类(具有更好的命名约定)
WrappedFont segoe = WrappedFont(Font::load("segoe.ttf"));

它还将重载=和一个复制ctor,以及一个析构函数。

对于用户来说,通常更需要游戏gui管理其图像和字体,还是更希望使用包装图案?

谢谢

最佳答案

基本上,这是用于处理load/destroy逻辑的自定义智能指针类型。这是非常习惯的做法,也是C++的使用方式。资源管理应该是自动的。

因此,您的包装程序很好,但也许您是在这里重新发明轮子。您可以考虑重写字体系统,以便将destroy完成的工作移至Font析构函数,在这种情况下,您可以使用常规的boost::shared_ptr(也可以从C++ 0x中的std或旧编译器中的std::tr1获得,以支持技术报告1)。使用当前代码,您也可以使用shared_ptr,但是您需要提供一个自定义删除器,我觉得这有点麻烦。

关于c++ - 我应该为需要在堆上分配的多态类包装吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5704110/

10-11 22:36
查看更多