目标:在代码的不同部分,我正在加载文件(在我的例子中是纹理和字体)。因此,下载文件可以在程序执行的任何时候发生(虽然所有缓存,但仍然。)我想下载只在启动时发生一次。
可能的解决方案:
- 使用纹理和字体手动填充缓存对象。
- 扫描文件夹 /textures/ /fonts/
- 魔法
实际上我会像第二种情况一样处理纹理(因为它对内存并不重要)。对于字体,我将使用第一种情况(因为它们对每种尺寸都有不同的渲染)。但我仍然想知道如何使这个过程自动化。
应该忘记纹理和字体以缩小问题范围并考虑带字符串的向量。
class Files{
static vector<string> files;
static void addFile(string file){/* magic. may be template<string file> */}
static void loadFiles()
{
for(auto file:files){
cout << file; //for example
}
}
}
int main(){
Files::loadFiles();//=> foobarsmthing
Files::addFile("foo");
Files::addFile("bar");
Files::addFile("smthing");
return 0;
}
我知道可以使用模板计算一些表达式。并认为我的问题的答案只是“不”。