Я работаю над менеджером ресурсов для своего игрового движка, и для добавления нового актива требуется несколько повторений. Требуется 4 вещи: контейнер, функция загрузки и две функции получения, поэтому для 4 ресурсов (например, сетка, текстура, Шейдер, Аудио) — это 16 вещей, которые нужно добавить. Я не думаю, что я могу что-то сделать с функциями загрузки, но с другой стороны, функции получения, по сути, такие же: они ищут карту с заданным дескриптором и возвращают актив. Я предполагаю, что с помощью шаблонов и/или наследования я мог бы просто получить общие функции получения, которые работают для любого ресурса. У меня нет большого опыта работы с ними, поэтому не очень очевидно, как я могу это реорганизовать.
struct ResourceHandle {
unsigned int id;
bool valid;
};
struct Mesh {
std::vector vertices;
unsigned int vao, vbo;
};
struct MeshMeta {
ResourceHandle handle;
std::string filepath;
time_t lastModifiedTime;
};
namespace ResourceManager {
namespace {
std::unordered_map meshes;
std::unordered_map textures;
std::unordered_map shaders;
}
void ReloadResources() {}
// Instead of this
ResourceHandle LoadMesh() {}
MeshMeta GetMesh(ResourceHandle handle) {}
ResourceHandle GetMesh(const std::string& filepath) {}
ResourceHandle LoadTexture() {}
TextureMeta GetTexture(ResourceHandle handle) {}
ResourceHandle GetTexture(const std::string& filepath) {}
ResourceHandle LoadShader() {}
ShaderMeta GetShader(ResourceHandle handle) {}
ResourceHandle GetShader(const std::string& filepath) {}
// It would just be
ResourceHandle LoadMesh() {}
ResourceHandle LoadTexture() {}
ResourceHandle LoadShader() {}
ResourceMeta GetResource(ResourceHandle handle) {}
ResourceHandle GetResource(const std::string& filepath) {}
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... and-or-oop
C++, как я могу уменьшить повторяющийся код с помощью шаблонов и/или ООП? [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Может ли кто-нибудь помочь мне в программе шаблонов шаблонов ниже [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Может ли кто-нибудь помочь мне в программе шаблонов шаблонов ниже [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблемы с загрузкой файла JSON в код ООП в приключении Python Text [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-