【发布时间】:2013-02-08 21:50:46
【问题描述】:
这个问题可能很难理解,但问题很简单,我会在这里用简单的话来描述。 现在,我的资源管理是:
cResMgr<cTexture> textures;
cResMgr<cSound> sounds;
我想做的是:
cResMgr resources;
resources.add<cTexture>(...);
resources.get<cSound>(...);
基本上,我的资源管理器具有“获取”和“添加”功能。我希望当我第一次调用 cWhatever 类型的函数时,它会为它创建一个容器。下次调用时,它就在那里(类似于函数中的静态变量)
问题是,我该如何实现它?我能想到的唯一解决方案是让每个资源都派生自空的基类 cResource,这样我就可以拥有一个指向 cResource 的指针容器。问题是,资源类型不是我的(它们来自外部库)
有什么解决办法吗?
【问题讨论】:
-
"(类似于函数中的静态变量)" 是什么让你无法使用它?
-
@Grizzly 新容器必须在运行时生成 - 即 cResMgr 不知道它必须存储多少容器。
-
所以不是每个资源类型一个容器?
-
这需要线程安全吗?
-
@Grizly 现在我为每种资源类型提供一个容器,我希望有一个资源管理器来存储它们。
标签: c++ templates types containers factory