请问大佬一个关于 c++资源管理类的问题

2019-03-25 17:13:02 +08:00
 MrVito

我有一个资源管理类,叫 ResMgr,里面要管理很多不同类型的资源,ResA、ResB、ResC,这些资源都是从文件中初始化的,都继承类同一个基类 ResBase,每添加一个新的资源 ResX,我都要加同样的代码

private:
  ResX res_x_;
public:
  const ResX& res_x() const { return res_x_; }
res_x_.init("path");//这个 path 对不同的资源来说是不一样的

有没有什么方式一口气把这三件事一起做了啊,我现在已经有 30 多种资源了,感觉一样的代码写了无数遍……
最好是能在 c++11 标准下解决,更高级的语法暂时不支持

1188 次点击
所在节点    问与答
7 条回复
karllynn
2019-03-25 17:23:56 +08:00
emmm 你可以写一个代码生成器…
MrVito
2019-03-25 17:43:33 +08:00
@karllynn 不行……因为有一些资源的逻辑是不一样的,大部分的资源都只要提供一个访问函数就行了,有一些还需要提供一些和业务相关的查找方法。
karllynn
2019-03-25 17:48:34 +08:00
那你把思路反过来,资源管理类这边写个注册函数,然后各种资源把自己注册到管理类
v2byy
2019-03-25 17:49:12 +08:00
模版考虑一下?为什么非要放在一个管理类中?
jxf2008
2019-03-25 17:57:17 +08:00
不是很懂楼主的意思


你的那些 ResA、ResB、ResC 能否放入 Map 中,如果可以,只要两个函数就可以解决了
add("类名",ResX),
get("类名")
ResMgr 类李建立一个 Map 管理这些资源类,这些资源类也可以随时添加改删
v2mm
2019-03-25 17:59:26 +08:00
这种一般考虑用模板
MrVito
2019-03-25 18:24:45 +08:00
@karllynn @v2byy @jxf2008 @v2mm 更新了问题……很早之前的代码了,刚才去看源文件才意识到自己说错了,不好意思。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX